#include <async.h>
#include <malloc.h>
#include <mem.h>
#include <stdio.h>
#include <byteorder.h>
#include <str.h>
#include <errno.h>
#include <ipc/nil.h>
#include <ipc/net.h>
#include <ipc/services.h>
#include <net/modules.h>
#include <net_checksum.h>
#include <ethernet_lsap.h>
#include <ethernet_protocols.h>
#include <protocol_map.h>
#include <net/device.h>
#include <netif_remote.h>
#include <net_interface.h>
#include <il_remote.h>
#include <adt/measured_strings.h>
#include <packet_client.h>
#include <packet_remote.h>
#include <nil_skel.h>
#include "eth.h"
Go to the source code of this file.
Defines | |
| #define | ETH_8023_2_LSAP (2 << ETH_MODE_SHIFT) |
| 802.3 + 802.2 + LSAP mode flag. | |
| #define | ETH_8023_2_SNAP (3 << ETH_MODE_SHIFT) |
| 802.3 + 802.2 + LSAP + SNAP mode flag. | |
| #define | ETH_DIX (1 << ETH_MODE_SHIFT) |
| DIX Ethernet mode flag. | |
| #define | ETH_DUMMY (1 << ETH_DUMMY_SHIFT) |
| Dummy device flag. | |
| #define | ETH_DUMMY_SHIFT 0 |
| Dummy flag shift value. | |
| #define | ETH_MAX_CONTENT 1500u |
| Maximum packet content length. | |
| #define | ETH_MAX_TAGGED_CONTENT(flags) |
| Maximum tagged packet content length. | |
| #define | ETH_MIN_CONTENT 46u |
| Minimum packet content length. | |
| #define | ETH_MIN_TAGGED_CONTENT(flags) |
| Minimum tagged packet content length. | |
| #define | ETH_MODE_MASK (3 << ETH_MODE_SHIFT) |
| Device mode flags. | |
| #define | ETH_MODE_SHIFT 1 |
| Mode flag shift value. | |
| #define | ETH_PREFIX |
| Reserved packet prefix length. | |
| #define | ETH_SUFFIX (sizeof(eth_fcs_t)) |
| Reserved packet suffix length. | |
| #define | IS_8023_2_LSAP(flags) (((flags) & ETH_MODE_MASK) == ETH_8023_2_LSAP) |
| Return whether the 802.3 + 802.2 + LSAP mode flag is set. | |
| #define | IS_8023_2_SNAP(flags) (((flags) & ETH_MODE_MASK) == ETH_8023_2_SNAP) |
| Return whether the 802.3 + 802.2 + LSAP + SNAP mode flag is set. | |
| #define | IS_DIX(flags) (((flags) & ETH_MODE_MASK) == ETH_DIX) |
| Return whether the DIX Ethernet mode flag is set. | |
| #define | IS_DUMMY(flags) ((flags) & ETH_DUMMY) |
| Returns the dummy flag. | |
| #define | NAME "eth" |
| The module name. | |
Typedefs | |
| typedef enum eth_addr_type | eth_addr_type_t |
| Type definition of the ethernet address type. | |
Enumerations | |
| enum | eth_addr_type { ETH_LOCAL_ADDR, ETH_BROADCAST_ADDR } |
| Ethernet address type. More... | |
Functions | |
| static int | eth_addr_message (device_id_t device_id, eth_addr_type_t type, measured_string_t **address) |
| Returns the device hardware address. | |
| static int | eth_device_message (device_id_t device_id, services_t service, size_t mtu) |
| Registers new device or updates the MTU of an existing one. | |
| static int | eth_packet_space_message (device_id_t device_id, size_t *addr_len, size_t *prefix, size_t *content, size_t *suffix) |
| Returns the device packet dimensions for sending. | |
| static int | eth_prepare_packet (int flags, packet_t *packet, uint8_t *src_addr, int ethertype, size_t mtu) |
| Prepares the packet for sending. | |
| static eth_proto_t * | eth_process_packet (int flags, packet_t *packet) |
| Processes the received packet and chooses the target registered module. | |
| static void | eth_receiver (ipc_callid_t iid, ipc_call_t *icall) |
| Processes IPC messages from the registered device driver modules in an infinite loop. | |
| static int | eth_register_message (services_t service, int phone) |
| Registers receiving module service. | |
| static int | eth_send_message (device_id_t device_id, packet_t *packet, services_t sender) |
| Sends the packet queue. | |
| int | main (int argc, char *argv[]) |
| Main entry point. | |
| int | nil_device_state_msg_local (int nil_phone, device_id_t device_id, int state) |
| Notify the network interface layer about the device state change. | |
| int | nil_initialize (int net_phone) |
| Module initialization. | |
| int | nil_module_message (ipc_callid_t callid, ipc_call_t *call, ipc_call_t *answer, size_t *answer_count) |
| Message processing function. | |
| int | nil_received_msg_local (int nil_phone, device_id_t device_id, packet_t *packet, services_t target) |
| Pass the packet queue to the network interface layer. | |
Variables | |
| eth_globals_t | eth_globals |
| Ethernet module global data. | |
Definition in file eth.c.
1.4.7