2009-04-18 Zheng Da * device_impl.c (ds_device_open): Create a virtual device if it doesn't exist. * netfs_impl.c (new_node): Test if the lnode structure exists before setting its field. (lookup): Copy the device name and don't create the virtual device. (netfs_validate_stat): Set the status with the one of the underlying node if the node has no lnode structure. (netfs_attempt_chmod): chmod isn't supported if the node has no lnode structure. (netfs_node_norefs): Free the name in netnode. * netfs_impl.h (net_node): Add new field 'name'. 2009-04-18 Zheng Da * device_impl.c (ds_device_open): Check the mode for opening the file. * multiplexer.c (underlying_node_stat): New variable. (main): Get the mapped time from Mach and set the time of the underlying node of the translator. * netfs_impl.c (lookup): Set the new created node with the same permission as the underlying node of the translator and its time. (netfs_check_open_permissions): Check the open permission of a node in the same way. (netfs_attempt_unlink): Change the return value. (netfs_attempt_rename): Likewise. (netfs_attempt_mkdir): Likewise. (netfs_attempt_rmdir): Likewise. (netfs_attempt_chown): Likewise. (netfs_attempt_chauthor): Likewise. (netfs_attempt_mksymlink): Likewise. (netfs_attempt_mkdev): Likewise. (netfs_set_translator): Likewise. (netfs_attempt_chflags): Likewise. (netfs_attempt_set_size): Likewise. (netfs_attempt_link): Likewise. (netfs_attempt_mkfile): Likewise. (netfs_attempt_write): Likewise. (netfs_attempt_chmod): Write the code to support the change of the mode. * netfs_impl.h (multiplexer_maptime): Add the declaration. 2009-01-03 Zheng Da * device_impl.c (ds_device_write): Deallocate the out-of-line data. 2008-12-12 Zheng Da * multiplexer.c (main): Initialize the file status of the root node. * netfs_impl.c (netfs_validate_stat): Set the file status of the node with the one in the light node. * vdev.h (dev_act_func): Define a new type. (foreach_dev_do): Declare the function. 2008-11-18 Zheng Da * netfs_impl.c (netfs_get_dirents): Use foreach_dev_do. * vdev.c (dev_head, dev_num): Hide in the file. (dev_list_lock): New variable. (get_dev_num): New function. (lookup_dev_by_name): Use lock. (foreach_dev_do): New function. (remove_dead_port_from_dev): Use lock. (broadcast_pack, broadcast_msg): Use foreach_dev_do. * vdev.h (dev_num): Remove declaration. (get_dev_num): Add declaration. 2008-11-13 Zheng Da * device_impl.c (ds_device_open): Use dev_port, dereference pi. * util.h (print_backtrace): New macro. * vdev.c (add_vdev): Set dev_port. * vdev.h (vether_device): Add dev_port. 2008-11-12 Zheng Da * Makefile (SRCS): Updated. * demuxer.c: New file. * device_impl.c (ds_device_open): Use netfs_port_bucket. * make-protid.c: Deleted. 2008-11-02 Zheng Da * Makefile (CFLAGS): Add a macro. (SRCS): Add new C files. (LCLHDRS): Add new H files. (HURDLIBS): Change libraries. * demuxer.c: New file. * device_impl.c: New file. * make-protid.c: New file. * netfs_impl.c: New file. * netfs_impl.h: New file. * notify_impl.c: New file. * multiplexer.c: Remove the trivfs variables. Move the implementation of notify interface. Move the implementation of device interface. (multiplexer_thread): New functions. (main): Run the libnetfs translator. * util.h (debug): Update. * vdev.c (lookup_dev_by_name): Use strncmp. (add_vdev): Change its interface. 2008-10-27 Zheng Da * README: Update. * bpf_impl.c (destroy_filters): New function. * multiplexer.c (nb_dev): Deleted. (options): Remove the option '-v'. (do_mach_notify_no_senders): Remove all port_info in the same way. (ds_device_open): Create new devices if they don't exist, and decrease their reference counts. (ds_device_set_filter): Fix a bug. (trivfs_goaway): Use has_vdev() to test. (parse_opt): Remove the code of handling '-v'. (main): Remove the code of creating virtual devices. * util.h (ETH_P_IP): New macro. * vdev.c (all_dev_close): Deleted. (add_vdev): Link virtual device. (destroy_vdev): New function. * vdev.h (vether_device): Changed. 2008-10-03 Zheng Da * Makefile (CFLAGS): Remove the include paths from pfinet. * util.h: Remove the line of including linux/if_ether.h. (ETH_ALEN): New macro. (ethhdr): New structure. * vdev.c (ETH_HLEN): New macro. * vdev.h: Remove the line of including linux/etherdevice.h and include util.h 2008-10-03 Zheng Da * multiplexer.c (parse_opt): Don't create the virtual devices in case 'v'. (main): Create the virtual devices. * README: Update. 2008-10-03 Zheng Da * multiplexer.c (ds_device_write): Don't call device_write when ether_port is NULL. (ds_device_get_status): Call dev_getstat when ether_port is NULL. (main): If device_file isn't specified, don't open the underlying device. 2008-09-26 Zheng Da * vdev.c (deliver_msg): Use non-block send. 2008-09-21 Zheng Da * README: Update. 2008-09-02 Zheng Da * ethernet.c (ether_filter): Use the original NPF filter. 2008-9-01 Zheng Da * multiplexer.c (ds_device_write): Reverse the calling of functions. (ds_device_get_status): Call device_get_status. * vdev.c (broadcast_pack): Change its function prototype. Broadcast to all other interface. (deliver_pack): Don't set the message header. (broadcast_msg): Save the original message header and restore it. (deliver_msg): Deallocate the port if mach_msg fails. * vdev.h (broadcast_pack): Change its function prototype. 2008-8-29 Zheng Da * ethernet.c (ethernet_open): Use error instead of assert_perror. * multiplexer.c (ds_device_set_filter): Return the error. 2008-8-28 Zheng Da * ethernet.c (NET_FLAGS): New macro. 2008-8-22 Zheng Da * README: Update. * Makefile: Remove list.h. * multiplexer.c (do_mach_notify_no_senders): Get vether_device object with ports_lookup_port(). (ds_xxx_device_set_status): Likewise. (ds_xxx_device_get_status): Likewise. (ds_xxx_device_set_filter): Likewise. (ds_device_write): Likewise. (ds_device_write_inband): Likewise. (ds_device_read): Likewise. (ds_device_read_inband): Likewise. (ds_device_map): Likewise. (ds_device_set_status): Likewise. (ds_device_get_status): Likewise. (ds_device_set_filter): Likewise. (do_mach_notify_dead_name): Deallocate the port. (ds_device_open): Get the name directly from the vether_device object. (ds_device_close): Return 0 immediately. * vdev.c (dev_head): Point to the head of the device list. (print_eth_addr): Removed. (lookup_dev_by_devport): Likewise. (lookup_dev_by_name): Use the for loop to replace list_for_each_entry. (remove_dead_port_from_dev): Likewise. (all_dev_close): Likewise. (broadcast_pack): Likewise. (broadcast_msg): Likewise. (add_vdev): Create the vether_device object with ports_create_port. (has_vdev): Test if the device list is empty. * vdev.h: Don't include list.h. (vether_device): Include the port_info object instead of its pointer. (next): Replace dev_list. * list.h: Removed. 2008-8-20 Zheng Da * README: Update. * multiplexer.c (options): Update. 2008-8-20 Zheng Da * multiplexer.c (main): Test device_file before using it. 2008-8-20 Zheng Da * multiplexer.c (device_file): Rename a variable. (main): Use device_file directly. 2008-8-19 Zheng Da * multiplexer.c (main): Generate the device file name, and use it to open the device. 2008-8-18 Zheng Da * README: New file. * multiplexer.c (options): Change the meaning of '-v' option. (parse_opt): Change the way of handling '-v' option. * vdev.c (has_vdev): New function. * vdev.h (has_vdev): New declaration. 2008-8-17 Zheng Da * ethernet.c (ethernet_open): Use a hard coded string for the device name. * multiplexer.c: Remove the option '-M'. (parse_opt): Remove the code of handling '-M' option. (main): Get the master device port from the device file. 2008-8-14 Zheng Da * ChangeLog: New file. * multiplexer.c (vdev_portclass, other_portclass): New variables. (do_mach_notify_no_senders): Mark the device unused when there are no senders for the device. (do_mach_notify_dead_name): Return 0. (ds_device_open): Mark the device used. (ds_device_close): Remove the code of decreasing the count of the device. (trivfs_goaway): Only test if all devices aren't used, and delete the code of closing the device. (parse_opt): Use vdev_portclass to create the virtual device. (main): Create vdev_portclass and other_portclass, open the ethernet device with other_portclass and create notify_pi with other_portclass. * vdev.c (all_dev_close): Change the way of testing if all devices are closed. * vdev.h (vether_device): Replace count field with used. 2008-8-13 Zheng Da * bpf_impl.c: New file. * bpf_impl.h: New file. * dev_stat.c: New file. * ethernet.c: New file. * ethernet.h: New file. * list.h: New file. * Makefile: New file. * multiplexer.c: New file. * queue.c: New file. * queue.h: New file. * test.c: New file. * util.h: New file. * vdev.c: New file. * vdev.h: New file.