net_datalink_protocol
typedef struct net_datalink_protocol net_datalink_protocol;
struct net_datalink_protocol* next;
net_datalink_protocol** _protocol);
status_t (*uninit_protocol)(net_datalink_protocol* self);
status_t (*send_data)(net_datalink_protocol* self, net_buffer* buffer);
status_t (*interface_up)(net_datalink_protocol* self);
void (*interface_down)(net_datalink_protocol* self);
status_t (*change_address)(net_datalink_protocol* self,
status_t (*control)(net_datalink_protocol* self, int32 option,
status_t (*join_multicast)(net_datalink_protocol* self,
status_t (*leave_multicast)(net_datalink_protocol* self,
arp_uninit_protocol(net_datalink_protocol *protocol)
arp_send_data(net_datalink_protocol *_protocol, net_buffer *buffer)
arp_up(net_datalink_protocol* _protocol)
arp_down(net_datalink_protocol *protocol)
struct arp_protocol : net_datalink_protocol {
arp_change_address(net_datalink_protocol* _protocol,
arp_control(net_datalink_protocol *_protocol, int32 op, void *argument,
arp_join_multicast(net_datalink_protocol *protocol, const sockaddr *address)
arp_leave_multicast(net_datalink_protocol *protocol, const sockaddr *address)
net_datalink_protocol *protocol;
net_datalink_protocol** _protocol)
net_datalink_protocol** _protocol)
ethernet_frame_uninit(net_datalink_protocol* protocol)
ethernet_frame_send_data(net_datalink_protocol* protocol, net_buffer* buffer)
ethernet_frame_up(net_datalink_protocol* protocol)
ethernet_frame_down(net_datalink_protocol* protocol)
ethernet_frame_change_address(net_datalink_protocol* protocol,
ethernet_frame_control(net_datalink_protocol* protocol, int32 option,
ethernet_frame_join_multicast(net_datalink_protocol* protocol,
ethernet_frame_leave_multicast(net_datalink_protocol* protocol,
struct ethernet_frame_protocol : net_datalink_protocol {
ipv6_datalink_uninit(net_datalink_protocol* protocol)
ipv6_datalink_send_data(net_datalink_protocol* _protocol, net_buffer* buffer)
net_datalink_protocol* protocol;
ipv6_datalink_up(net_datalink_protocol* _protocol)
ipv6_datalink_down(net_datalink_protocol *protocol)
ipv6_datalink_change_address(net_datalink_protocol* _protocol,
ipv6_datalink_control(net_datalink_protocol* protocol, int32 op, void* argument,
ipv6_datalink_join_multicast(net_datalink_protocol* protocol,
ipv6_datalink_leave_multicast(net_datalink_protocol* protocol,
struct ipv6_datalink_protocol : net_datalink_protocol {
net_datalink_protocol** _protocol)
loopback_frame_send_data(net_datalink_protocol* protocol, net_buffer* buffer)
loopback_frame_up(net_datalink_protocol* protocol)
loopback_frame_down(net_datalink_protocol* protocol)
loopback_frame_change_address(net_datalink_protocol* protocol,
loopback_frame_control(net_datalink_protocol* protocol, int32 option,
loopback_frame_join_multicast(net_datalink_protocol* protocol,
loopback_frame_leave_multicast(net_datalink_protocol* protocol,
struct loopback_frame_protocol : net_datalink_protocol {
net_datalink_protocol** _protocol)
loopback_frame_uninit(net_datalink_protocol* protocol)
ppp_frame_down(net_datalink_protocol* protocol)
ppp_frame_change_address(net_datalink_protocol* protocol,
ppp_frame_control(net_datalink_protocol* protocol, int32 option,
ppp_frame_join_multicast(net_datalink_protocol* protocol,
ppp_frame_leave_multicast(net_datalink_protocol* protocol,
struct ppp_frame_protocol : net_datalink_protocol {
net_datalink_protocol** _protocol)
ppp_frame_uninit(net_datalink_protocol* protocol)
ppp_frame_send_data(net_datalink_protocol* protocol, net_buffer* buffer)
ppp_frame_up(net_datalink_protocol* protocol)
interface_protocol_join_multicast(net_datalink_protocol* _protocol,
interface_protocol_leave_multicast(net_datalink_protocol* _protocol,
struct interface_protocol : net_datalink_protocol {
net_datalink_protocol** _protocol)
interface_protocol_uninit(net_datalink_protocol* protocol)
interface_protocol_send_data(net_datalink_protocol* _protocol,
interface_protocol_up(net_datalink_protocol* protocol)
interface_protocol_down(net_datalink_protocol* _protocol)
interface_protocol_change_address(net_datalink_protocol* protocol,
interface_protocol_control(net_datalink_protocol* _protocol, int32 option,
struct net_datalink_protocol* first_protocol;
net_datalink_protocol* protocol = datalink->first_protocol;
net_datalink_protocol* next = protocol->next;
net_datalink_protocol* last = NULL;
net_datalink_protocol* protocol;