net_device
struct net_device* device;
status_t (*init_device)(const char* name, net_device** _device);
status_t (*uninit_device)(net_device* device);
status_t (*up)(net_device* device);
void (*down)(net_device* device);
status_t (*control)(net_device* device, int32 op, void* argument,
status_t (*send_data)(net_device* device, net_buffer* buffer);
status_t (*receive_data)(net_device* device, net_buffer** _buffer);
status_t (*set_mtu)(net_device* device, size_t mtu);
status_t (*set_promiscuous)(net_device* device, bool promiscuous);
status_t (*set_media)(net_device* device, uint32 media);
status_t (*add_multicast)(net_device* device,
status_t (*remove_multicast)(net_device* device,
status_t (*register_device_deframer)(net_device* device,
status_t (*unregister_device_deframer)(net_device* device);
status_t (*register_domain_device_handler)(net_device* device,
status_t (*register_device_handler)(net_device* device,
status_t (*unregister_device_handler)(net_device* device, int32 type);
status_t (*register_device_monitor)(net_device* device,
status_t (*unregister_device_monitor)(net_device* device,
status_t (*device_link_changed)(net_device* device);
status_t (*device_removed)(net_device* device);
status_t (*device_enqueue_buffer)(net_device* device,
typedef struct net_device net_device;
typedef status_t (*net_deframe_func)(net_device* device, net_buffer* buffer);
typedef status_t (*net_receive_func)(void* cookie, net_device* device,
arp_receive(void *cookie, net_device *device, net_buffer *buffer)
net_device *device = protocol->interface->device;
ethernet_deframe(net_device* device, net_buffer* buffer)
net_device* device = interface->device;
loopback_deframe(net_device* device, net_buffer* buffer)
dialup_init(const char* name, net_device** _device)
dialup_uninit(net_device* _device)
dialup_up(net_device* _device)
dialup_down(net_device* _device)
dialup_control(net_device* _device, int32 op, void* argument,
dialup_send_data(net_device* _device, net_buffer* buffer)
struct dialup_device : net_device {
dialup_receive_data(net_device* _device, net_buffer** _buffer)
dialup_set_mtu(net_device* _device, size_t mtu)
dialup_set_promiscuous(net_device* _device, bool promiscuous)
dialup_set_media(net_device* device, uint32 media)
dialup_add_multicast(struct net_device* _device, const sockaddr* _address)
dialup_remove_multicast(struct net_device* _device, const sockaddr* _address)
ethernet_init(const char *name, net_device **_device)
ethernet_uninit(net_device *device)
ethernet_up(net_device *_device)
ethernet_down(net_device *_device)
ethernet_control(net_device *_device, int32 op, void *argument,
ethernet_send_data(net_device *_device, net_buffer *buffer)
ethernet_receive_data(net_device *_device, net_buffer **_buffer)
struct ethernet_device : net_device, DoublyLinkedListLinkImpl<ethernet_device> {
ethernet_set_mtu(net_device *_device, size_t mtu)
ethernet_set_promiscuous(net_device *_device, bool promiscuous)
ethernet_set_media(net_device *device, uint32 media)
ethernet_add_multicast(struct net_device *_device, const sockaddr *_address)
ethernet_remove_multicast(struct net_device *_device, const sockaddr *_address)
loopback_control(net_device *device, int32 op, void *argument,
loopback_send_data(net_device *device, net_buffer *buffer)
loopback_set_mtu(net_device *device, size_t mtu)
loopback_set_promiscuous(net_device *device, bool promiscuous)
loopback_set_media(net_device *device, uint32 media)
loopback_add_multicast(net_device *device, const sockaddr *address)
loopback_remove_multicast(net_device *device, const sockaddr *address)
struct loopback_device : net_device {
loopback_init(const char *name, net_device **_device)
loopback_uninit(net_device *_device)
loopback_up(net_device *device)
loopback_down(net_device *device)
tunnel_init(const char* name, net_device** _device)
tunnel_uninit(net_device* _device)
tunnel_up(net_device* _device)
tunnel_down(net_device* _device)
tunnel_control(net_device* device, int32 op, void* argument, size_t length)
tunnel_send_data(net_device* _device, net_buffer* buffer)
struct tunnel_device : net_device {
tunnel_receive_data(net_device* _device, net_buffer** _buffer)
tunnel_set_mtu(net_device* device, size_t mtu)
tunnel_set_promiscuous(net_device* device, bool promiscuous)
tunnel_set_media(net_device* device, uint32 media)
tunnel_add_multicast(net_device* device, const sockaddr* address)
tunnel_remove_multicast(net_device* device, const sockaddr* address)
ppp_uninit(net_device *device)
ppp_up(net_device *_device)
ppp_down(net_device *_device)
ppp_control(net_device *_device, int32 op, void *argument,
ppp_send_data(net_device *_device, net_buffer *buffer)
ppp_receive_data(net_device *_device, net_buffer **_buffer)
ppp_set_mtu(net_device *_device, size_t mtu)
ppp_set_promiscuous(net_device *_device, bool promiscuous)
ppp_set_media(net_device *device, uint32 media)
ppp_add_multicast(struct net_device *_device, const sockaddr *_address)
ppp_remove_multicast(struct net_device *_device, const sockaddr *_address)
ppp_init(const char *name, net_device **_device)
ppp_deframe(net_device* device, net_buffer* buffer)
static net_device*
extern net_device *FindPPPoEInterface(const char *name);
pppoe_input(void *cookie, net_device *_device, net_buffer *packet);
net_device *EthernetIfnet() const
net_device *fEthernetIfnet;
net_device*
pppoe_input(void *cookie, net_device *_device, net_buffer *packet)
net_device *current = NULL; // get_interfaces();
net_device *ethernetIfnet;
net_device *fIfnet;
net_device *Ifnet() const
net_device *(*RegisterInterface)(ppp_interface_id ID);
struct ppp_device : net_device, DoublyLinkedListLinkImpl<ppp_device> {
update_device_send_stats(struct net_device* device, status_t status, size_t packetSize)
struct net_device* device;
net_device* device = interface->device;
domain_receive_adapter(void* cookie, net_device* device, net_buffer* buffer)
allocate_device_interface(net_device* device, net_device_module_info* module)
net_device* device = interface->device;
net_device* device;
net_device* device = interface->device;
net_device* device = interface->device;
net_device* device = interface->device;
unregister_device_deframer(net_device* device)
register_device_deframer(net_device* device, net_deframe_func deframeFunc)
register_domain_device_handler(struct net_device* device, int32 type,
register_device_handler(struct net_device* device, int32 type,
unregister_device_handler(struct net_device* device, int32 type)
register_device_monitor(net_device* device, net_device_monitor* monitor)
unregister_device_monitor(net_device* device, net_device_monitor* monitor)
device_link_changed(net_device* device)
device_removed(net_device* device)
device_enqueue_buffer(net_device* device, net_buffer* buffer)
struct net_device* device;
status_t unregister_device_deframer(net_device* device);
status_t register_device_deframer(net_device* device,
status_t register_domain_device_handler(struct net_device* device, int32 type,
status_t register_device_handler(struct net_device* device, int32 type,
status_t unregister_device_handler(struct net_device* device, int32 type);
status_t register_device_monitor(struct net_device* device,
status_t unregister_device_monitor(struct net_device* device,
status_t device_link_changed(net_device* device);
status_t device_removed(net_device* device);
status_t device_enqueue_buffer(net_device* device, net_buffer* buffer);
LinkProtocol::_ReceiveData(void* cookie, net_device* device, net_buffer* buffer)
static status_t _ReceiveData(void* cookie, net_device* device,
notify_link_changed(net_device* device)
net_device* device = route->interface_address->interface->device;
status_t notify_link_changed(net_device* device);