Ultibo API
C/C++ API for Ultibo Core
Loading...
Searching...
No Matches
network.h File Reference

Go to the source code of this file.

Data Structures

struct  _PACKET_FRAGMENT
struct  _ADAPTER_STATISTICS
struct  _NETWORK_PACKET
struct  _NETWORK_BUFFER
struct  _NETWORK_ENTRY
struct  _NETWORK_QUEUE
struct  _NETWORK_STATISTICS
struct  _NETWORK_DEVICE
struct  _NETWORK_EVENT
struct  _ETHERNET_HEADER
struct  _LLC_HEADER
struct  _SNAP_HEADER

Macros

#define NETWORK_NAME_PREFIX   "Network"
 Name prefix for Network Devices.
#define NETWORK_TYPE_NONE   0
#define NETWORK_TYPE_ETHERNET   1
#define NETWORK_TYPE_TOKENRING   2
#define NETWORK_TYPE_80211   3
 IEEE 802.11 Wireless (WiFi) network.
#define NETWORK_TYPE_MAX   3
#define NETWORK_STATE_CLOSED   0
#define NETWORK_STATE_CLOSING   1
#define NETWORK_STATE_OPENING   2
#define NETWORK_STATE_OPEN   3
#define NETWORK_STATE_MAX   3
#define NETWORK_STATUS_DOWN   0
#define NETWORK_STATUS_UP   1
#define NETWORK_STATUS_MAX   1
#define NETWORK_FLAG_NONE   0x00000000
#define NETWORK_FLAG_RX_BUFFER   0x00000001
 Device supports Receive Buffer (NetworkBufferReceive/NetworkBufferRelease).
#define NETWORK_FLAG_TX_BUFFER   0x00000002
 Device supports Transmit Buffer (NetworkBufferAllocate/NetworkBufferTransmit).
#define NETWORK_FLAG_RX_MULTIPACKET   0x00000004
 Device supports multiple packets in the same Receive entry.
#define NETWORK_FLAG_TX_MULTIPACKET   0x00000008
 Device supports multiple packets in the same Transmit entry.
#define NETWORK_CONTROL_CLEAR_STATS   1
 Clear Statistics.
#define NETWORK_CONTROL_SET_MAC   2
 Set the MAC for this device.
#define NETWORK_CONTROL_GET_MAC   3
 Get the MAC for this device.
#define NETWORK_CONTROL_SET_LOOPBACK   4
 Set Loopback Mode.
#define NETWORK_CONTROL_RESET   5
 Reset the device.
#define NETWORK_CONTROL_DISABLE   6
 Disable the device.
#define NETWORK_CONTROL_GET_HARDWARE   7
 Get Hardware address for this device.
#define NETWORK_CONTROL_GET_BROADCAST   8
 Get Broadcast address for this device.
#define NETWORK_CONTROL_GET_MTU   9
 Get MTU for this device.
#define NETWORK_CONTROL_GET_HEADERLEN   10
 Get Header length for this device.
#define NETWORK_CONTROL_GET_LINK   11
 Get link status for this device.
#define NETWORK_CONTROL_GET_SPEED   12
 Get link speed for this device.
#define NETWORK_CONTROL_GET_DUPLEX   13
 Get link speed for this device.
#define NETWORK_CONTROL_RESET_LINK   14
 Reset link for this device.
#define NETWORK_CONTROL_GET_STATS   15
 Get statistics for this device.
#define NETWORK_CONTROL_ADD_MULTICAST   16
 Add a multicast address to this device.
#define NETWORK_CONTROL_DEL_MULTICAST   17
 Delete a multicast address from this device.
#define NETWORK_CONTROL_GET_MULTICAST   18
 Get the list of multicast address for this device.
#define NETWORK_LINK_DOWN   NETWORK_STATUS_DOWN
#define NETWORK_LINK_UP   NETWORK_STATUS_UP
#define NETWORK_SPEED_NONE   0
#define NETWORK_SPEED_10   10
#define NETWORK_SPEED_100   100
#define NETWORK_SPEED_1000   1000
#define NETWORK_DUPLEX_NONE   0
#define NETWORK_DUPLEX_HALF   1
#define NETWORK_DUPLEX_FULL   2
#define NETWORK_LOCK_NONE   0
#define NETWORK_LOCK_READ   1
#define NETWORK_LOCK_WRITE   2
#define NETWORK_BUFFER_SIZE   1024
#define NETWORK_EVENT_NONE   0x00000000
#define NETWORK_EVENT_SYSTEM_START   0x00000001
 The network sub system is starting.
#define NETWORK_EVENT_SYSTEM_STOP   0x00000002
 The network sub system has stopped.
#define NETWORK_EVENT_ADAPTERS_START   0x00000004
 All network adapters are being started.
#define NETWORK_EVENT_ADAPTERS_STOP   0x00000008
 All network adapters have been stopped.
#define NETWORK_EVENT_TRANSPORTS_START   0x00000010
 All network transports are being started.
#define NETWORK_EVENT_TRANSPORTS_STOP   0x00000020
 All network transports have been stopped.
#define NETWORK_EVENT_PROTOCOLS_START   0x00000040
 All network protocols are being started.
#define NETWORK_EVENT_PROTOCOLS_STOP   0x00000080
 All network protocols have been stopped.
#define NETWORK_EVENT_SIGNATURE   0xBE1D50C2
#define NETWORK_EVENT_STATE_UNREGISTERED   0
#define NETWORK_EVENT_STATE_REGISTERED   1
#define NETWORK_EVENT_FLAG_NONE   0x00000000
#define ADAPTER_TYPE_UNKNOWN   0
#define ADAPTER_TYPE_WIRED   1
#define ADAPTER_TYPE_LOOPBACK   2
#define ADAPTER_TYPE_WIRELESS   3
#define ADAPTER_TYPE_SLIP   4
#define ADAPTER_TYPE_PPP   5
#define ADAPTER_THREAD_NAME   "Network Adapter"
 Thread name for Network adapter threads.
#define ADAPTER_THREAD_PRIORITY   THREAD_PRIORITY_HIGHER
 Thread priority for Network adapter threads.
#define ADAPTER_STATE_DISABLED   0
#define ADAPTER_STATE_ENABLED   1
#define ADAPTER_STATUS_DOWN   0
#define ADAPTER_STATUS_UP   1
#define CONFIG_TYPE_AUTO   0
#define CONFIG_TYPE_STATIC   1
#define CONFIG_TYPE_RARP   2
#define CONFIG_TYPE_BOOTP   3
#define CONFIG_TYPE_DHCP   4
#define CONFIG_TYPE_PSEUDO   5
#define CONFIG_TYPE_LOOPBACK   6
#define CONFIG_TYPE_SLIP   7
#define CONFIG_TYPE_PPP   8
#define CONFIG_TYPE_UNKNOWN   Word(-1)
#define AUTH_TYPE_UNKNOWN   0
#define AUTH_TYPE_EAP   1
#define AUTH_TYPE_RSN   2
#define FRAME_TYPE_UNKNOWN   0
#define FRAME_TYPE_ETHERNET_II   1
 Blue Book.
#define FRAME_TYPE_TOKEN_RING   3
 IEEE 802.5.
#define FRAME_TYPE_APPLETALK   5
 LocalTalk.
#define FRAME_TYPE_ETHERNET_8022   11
 IEEE 802.2 LLC.
#define FRAME_TYPE_ETHERNET_SNAP   98
 IEEE 802.2 LLC with SNAP Header.
#define FRAME_TYPE_ETHERNET_8023   99
 802.3 RAW (Novell)
#define FRAME_START_ETHERNET_SNAP   0xAAAA
#define FRAME_START_ETHERNET_8023   0xFFFF
#define ADAPTER_MODE_NONE   1
#define ADAPTER_MODE_LOCAL   2
#define ADAPTER_MODE_BROADCAST   3
 This is the default.
#define ADAPTER_MODE_LOCAL_MULTI   4
 Mode 3 plus directed Multicast.
#define ADAPTER_MODE_BROADCAST_MULTI   5
 Mode 3 plus all Multicast.
#define ADAPTER_MODE_PROMISCUOUS   6
 Promiscuous mode.
#define CONFIG_ADAPTER_DISCOVER   0
 Discover an Address from the ConfigHandler.
#define CONFIG_ADAPTER_REQUEST   1
 Request an Address from the ConfigHandler.
#define CONFIG_ADAPTER_RELEASE   2
 Release the Address obtained from ConfigHandler.
#define CONFIG_ADAPTER_RENEW   3
 Renew the Address obtained from ConfigHandler.
#define CONFIG_ADAPTER_REBIND   4
 Rebind the Address obtained from ConfigHandler.
#define CONFIG_ADAPTER_INFORM   5
 Obtain information only from the ConfigHandler.
#define CONFIG_ADAPTER_REBOOT   6
 Request previous Address after a Reboot.
#define CONFIG_RETRY_TIMEOUT   300000
 5 min Config Retry Timeout
#define CONFIG_RENEW_TIMEOUT   60000
 1 min Config Renew Timeout
#define CONFIG_REBIND_TIMEOUT   60000
 1 min Config Rebind Timeout
#define AUTH_COMMAND_ASSOCIATE   0
#define AUTH_COMMAND_DISASSOCIATE   1
#define AUTH_COMMAND_AUTHENTICATE   2
#define AUTH_COMMAND_UNAUTHENTICATE   3
#define MAX_MULTICAST_ADDRESS   8
 Maximum number of addresses per adapter.
#define MAX_PHYSICAL_PACKET   2048
 Large enough for all media types.
#define HARDWARE_ADDRESS_SIZE   6
 SizeOf(THardwareAddress).
#define MEDIA_TYPE_UNKNOWN   0x0000
#define MEDIA_TYPE_ETHERNET   0x0001
 ARP type of Ethernet Hardware (This value must not change, it is the actual values used by ARP packets).
#define MEDIA_TYPE_TOKENRING   0x0006
 ARP type of Token-Ring Hardware (This value must not change, it is the actual values used by ARP packets).
#define MEDIA_TYPE_IEEE80211   0x1000
#define MEDIA_TYPE_LOOPBACK   0x1001
#define MEDIA_TYPE_PPP   0x1002
#define MEDIA_TYPE_SLIP   0x1003
#define PACKET_MIN_TYPE   0x0600
 If the value Ethernet header TypeLength field is greater than this the frame is Ethernet II.
#define PACKET_TYPE_IP   0x0800
#define PACKET_TYPE_IP6   0x86DD
#define PACKET_TYPE_ARP   0x0806
#define PACKET_TYPE_RARP   0x8035
#define PACKET_TYPE_8021Q   0x8100
 802.1Q with extended Ethernet header
#define PACKET_TYPE_IPX   0x8137
 IPX on EII.
#define PACKET_TYPE_EAPOL   0x888E
 EAP-over-LAN (EAPOL).
#define PACKET_TYPE_RSN   0x88C7
 RSN pre-authentication.
#define PACKET_TYPE_TDLS   0x890D
 Tunneled direct-link setup.
#define PACKET_TYPE_RAW   0xFFFF
 IPX on 802.3.
#define PACKET_TYPE_LLC   0x0001
 IPX on 802.2.
#define MII_BMCR   0x00
 Basic mode control register.
#define MII_BMSR   0x01
 Basic mode status register.
#define MII_PHYSID1   0x02
 PHYS ID 1.
#define MII_PHYSID2   0x03
 PHYS ID 2.
#define MII_ADVERTISE   0x04
 Advertisement control reg.
#define MII_LPA   0x05
 Link partner ability reg.
#define MII_EXPANSION   0x06
 Expansion register.
#define MII_CTRL1000   0x09
 1000BASE-T control
#define MII_STAT1000   0x0a
 1000BASE-T status
#define MII_MMD_CTRL   0x0d
 MMD Access Control Register.
#define MII_MMD_DATA   0x0e
 MMD Access Data Register.
#define MII_ESTATUS   0x0f
 Extended Status.
#define MII_DCOUNTER   0x12
 Disconnect counter.
#define MII_FCSCOUNTER   0x13
 False carrier counter.
#define MII_NWAYTEST   0x14
 N-way auto-neg test reg.
#define MII_RERRCOUNTER   0x15
 Receive error counter.
#define MII_SREVISION   0x16
 Silicon revision.
#define MII_RESV1   0x17
 Reserved...
#define MII_LBRERROR   0x18
 Lpback, rx, bypass error.
#define MII_PHYADDR   0x19
 PHY address.
#define MII_RESV2   0x1a
 Reserved...
#define MII_TPISTATUS   0x1b
 TPI status for 10mbps.
#define MII_NCONFIG   0x1c
 Network interface config.
#define BMCR_RESV   0x003f
 Unused...
#define BMCR_SPEED1000   0x0040
 MSB of Speed (1000).
#define BMCR_CTST   0x0080
 Collision test.
#define BMCR_FULLDPLX   0x0100
 Full duplex.
#define BMCR_ANRESTART   0x0200
 Auto negotiation restart.
#define BMCR_ISOLATE   0x0400
 Isolate data paths from MII.
#define BMCR_PDOWN   0x0800
 Enable low power state.
#define BMCR_ANENABLE   0x1000
 Enable auto negotiation.
#define BMCR_SPEED100   0x2000
 Select 100Mbps.
#define BMCR_LOOPBACK   0x4000
 TXD loopback bits.
#define BMCR_RESET   0x8000
 Reset to default state.
#define BMSR_ERCAP   0x0001
 Ext-reg capability.
#define BMSR_JCD   0x0002
 Jabber detected.
#define BMSR_LSTATUS   0x0004
 Link status.
#define BMSR_ANEGCAPABLE   0x0008
 Able to do auto-negotiation.
#define BMSR_RFAULT   0x0010
 Remote fault detected.
#define BMSR_ANEGCOMPLETE   0x0020
 Auto-negotiation complete.
#define BMSR_RESV   0x00c0
 Unused...
#define BMSR_ESTATEN   0x0100
 Extended Status in R15.
#define BMSR_100HALF2   0x0200
 Can do 100BASE-T2 HDX.
#define BMSR_100FULL2   0x0400
 Can do 100BASE-T2 FDX.
#define BMSR_10HALF   0x0800
 Can do 10mbps, half-duplex.
#define BMSR_10FULL   0x1000
 Can do 10mbps, full-duplex.
#define BMSR_100HALF   0x2000
 Can do 100mbps, half-duplex.
#define BMSR_100FULL   0x4000
 Can do 100mbps, full-duplex.
#define BMSR_100BASE4   0x8000
 Can do 100mbps, 4k packets.
#define ADVERTISE_SLCT   0x001f
 Selector bits.
#define ADVERTISE_CSMA   0x0001
 Only selector supported.
#define ADVERTISE_10HALF   0x0020
 Try for 10mbps half-duplex.
#define ADVERTISE_1000XFULL   0x0020
 Try for 1000BASE-X full-duplex.
#define ADVERTISE_10FULL   0x0040
 Try for 10mbps full-duplex.
#define ADVERTISE_1000XHALF   0x0040
 Try for 1000BASE-X half-duplex.
#define ADVERTISE_100HALF   0x0080
 Try for 100mbps half-duplex.
#define ADVERTISE_1000XPAUSE   0x0080
 Try for 1000BASE-X pause.
#define ADVERTISE_100FULL   0x0100
 Try for 100mbps full-duplex.
#define ADVERTISE_1000XPSE_ASYM   0x0100
 Try for 1000BASE-X asym pause.
#define ADVERTISE_100BASE4   0x0200
 Try for 100mbps 4k packets.
#define ADVERTISE_PAUSE_CAP   0x0400
 Try for pause.
#define ADVERTISE_PAUSE_ASYM   0x0800
 Try for asymetric pause.
#define ADVERTISE_RESV   0x1000
 Unused...
#define ADVERTISE_RFAULT   0x2000
 Say we can detect faults.
#define ADVERTISE_LPACK   0x4000
 Ack link partners response.
#define ADVERTISE_NPAGE   0x8000
 Next page bit.
#define ADVERTISE_FULL   ADVERTISE_100FULL | ADVERTISE_10FULL | ADVERTISE_CSMA
#define ADVERTISE_ALL   ADVERTISE_10HALF | ADVERTISE_10FULL | ADVERTISE_100HALF | ADVERTISE_100FULL
#define LPA_SLCT   0x001f
 Same as advertise selector.
#define LPA_10HALF   0x0020
 Can do 10mbps half-duplex.
#define LPA_1000XFULL   0x0020
 Can do 1000BASE-X full-duplex.
#define LPA_10FULL   0x0040
 Can do 10mbps full-duplex.
#define LPA_1000XHALF   0x0040
 Can do 1000BASE-X half-duplex.
#define LPA_100HALF   0x0080
 Can do 100mbps half-duplex.
#define LPA_1000XPAUSE   0x0080
 Can do 1000BASE-X pause.
#define LPA_100FULL   0x0100
 Can do 100mbps full-duplex.
#define LPA_1000XPAUSE_ASYM   0x0100
 Can do 1000BASE-X pause asym.
#define LPA_100BASE4   0x0200
 Can do 100mbps 4k packets.
#define LPA_PAUSE_CAP   0x0400
 Can pause.
#define LPA_PAUSE_ASYM   0x0800
 Can pause asymetrically.
#define LPA_RESV   0x1000
 Unused...
#define LPA_RFAULT   0x2000
 Link partner faulted.
#define LPA_LPACK   0x4000
 Link partner acked us.
#define LPA_NPAGE   0x8000
 Next page bit.
#define LPA_DUPLEX   LPA_10FULL | LPA_100FULL
#define LPA_100   LPA_100FULL | LPA_100HALF | LPA_100BASE4
#define EXPANSION_NWAY   0x0001
 Can do N-way auto-nego.
#define EXPANSION_LCWP   0x0002
 Got new RX page code word.
#define EXPANSION_ENABLENPAGE   0x0004
 This enables npage words.
#define EXPANSION_NPCAPABLE   0x0008
 Link partner supports npage.
#define EXPANSION_MFAULTS   0x0010
 Multiple faults detected.
#define EXPANSION_RESV   0xffe0
 Unused...
#define ESTATUS_1000_TFULL   0x2000
 Can do 1000BT Full.
#define ESTATUS_1000_THALF   0x1000
 Can do 1000BT Half.
#define NWAYTEST_RESV1   0x00ff
 Unused...
#define NWAYTEST_LOOPBACK   0x0100
 Enable loopback for N-way.
#define NWAYTEST_RESV2   0xfe00
 Unused...
#define ADVERTISE_1000FULL   0x0200
 Advertise 1000BASE-T full duplex.
#define ADVERTISE_1000HALF   0x0100
 Advertise 1000BASE-T half duplex.
#define CTL1000_AS_MASTER   0x0800
#define CTL1000_ENABLE_MASTER   0x1000
#define LPA_1000MSFAIL   0x8000
 Master/Slave resolution failure.
#define LPA_1000LOCALRXOK   0x2000
 Link partner local receiver status.
#define LPA_1000REMRXOK   0x1000
 Link partner remote receiver status.
#define LPA_1000FULL   0x0800
 Link partner 1000BASE-T full duplex.
#define LPA_1000HALF   0x0400
 Link partner 1000BASE-T half duplex.
#define FLOW_CTRL_TX   0x01
#define FLOW_CTRL_RX   0x02
#define MII_MMD_CTRL_DEVAD_MASK   0x1f
 Mask MMD DEVAD.
#define MII_MMD_CTRL_ADDR   0x0000
 Address.
#define MII_MMD_CTRL_NOINCR   0x4000
 no post increment
#define MII_MMD_CTRL_INCR_RDWT   0x8000
 post increment on reads & writes
#define MII_MMD_CTRL_INCR_ON_WT   0xC000
 post increment on writes only
#define PHY_LINK_DOWN   0
#define PHY_LINK_UP   1
#define PHY_LINK_UNKNOWN   -1
#define PHY_INTERFACE_MODE_NONE   0
#define PHY_INTERFACE_MODE_INTERNAL   1
#define PHY_INTERFACE_MODE_MII   2
#define PHY_INTERFACE_MODE_GMII   3
#define PHY_INTERFACE_MODE_SGMII   4
#define PHY_INTERFACE_MODE_TBI   5
#define PHY_INTERFACE_MODE_REVMII   6
#define PHY_INTERFACE_MODE_RMII   7
#define PHY_INTERFACE_MODE_RGMII   8
#define PHY_INTERFACE_MODE_RGMII_ID   9
#define PHY_INTERFACE_MODE_RGMII_RXID   10
#define PHY_INTERFACE_MODE_RGMII_TXID   11
#define PHY_INTERFACE_MODE_RTBI   12
#define PHY_INTERFACE_MODE_SMII   13
#define PHY_INTERFACE_MODE_XGMII   14
#define PHY_INTERFACE_MODE_MOCA   15
#define PHY_INTERFACE_MODE_QSGMII   16
#define PHY_INTERFACE_MODE_TRGMII   17
#define PHY_INTERFACE_MODE_1000BASEX   18
#define PHY_INTERFACE_MODE_2500BASEX   19
#define PHY_INTERFACE_MODE_RXAUI   20
#define PHY_INTERFACE_MODE_XAUI   21
#define PHY_INTERFACE_MODE_10GKR   22
 10GBASE-KR, XFI, SFI - single lane 10G Serdes
#define PHY_INTERFACE_MODE_USXGMII   23
#define PHY_SPEED_10   10
#define PHY_SPEED_100   100
#define PHY_SPEED_1000   1000
#define PHY_SPEED_UNKNOWN   -1
#define PHY_DUPLEX_HALF   0
#define PHY_DUPLEX_FULL   1
#define PHY_DUPLEX_UNKNOWN   -1
#define SERVICE_SET_UNKNOWN   0
#define SERVICE_SET_BSS   1
 Basic Service Set.
#define SERVICE_SET_ESS   2
 Extended Service Set.
#define SERVICE_SET_IBSS   3
 Independent Basic Service Set.
#define SERVICE_SET_MBSS   4
 Mesh Basic Service Set.
#define ETHERNET_ADDRESS_SIZE   6
 SizeOf(TEthernetAddress).
#define ETHERNET_HEADER_SIZE   14
 SizeOf(TEthernetHeader).
#define ETHERNET_VLAN_SIZE   4
 Length of Ethernet VLAN tag.
#define ETHERNET_CRC_SIZE   4
 Length of Ethernet CRC (FCS).
#define ETHERNET_MTU   1500
#define ETHERNET_MIN_PAYLOAD   46
#define ETHERNET_MIN_PACKET_SIZE   ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MIN_PAYLOAD
#define ETHERNET_MAX_PACKET_SIZE   ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MTU
#define ETHERNET_TRANSMIT_BUFFER_SIZE   ETHERNET_MAX_PACKET_SIZE
#define LLC_HEADER_SIZE   3
 SizeOf(TLLCHeader).
#define SNAP_HEADER_SIZE   5
 SizeOf(TSNAPHeader).

Typedefs

typedef uint8_t HARDWARE_ADDRESS[HARDWARE_ADDRESS_SIZE]
typedef HARDWARE_ADDRESS HARDWARE_ADDRESSES[]
typedef HARDWARE_ADDRESS MULTICAST_ADDRESSES[MAX_MULTICAST_ADDRESS]
typedef struct _PACKET_FRAGMENT PACKET_FRAGMENT
typedef struct _ADAPTER_STATISTICS ADAPTER_STATISTICS
typedef struct _NETWORK_PACKET NETWORK_PACKET
typedef struct _NETWORK_BUFFER NETWORK_BUFFER
typedef struct _NETWORK_ENTRY NETWORK_ENTRY
typedef struct _NETWORK_QUEUE NETWORK_QUEUE
typedef struct _NETWORK_STATISTICS NETWORK_STATISTICS
typedef struct _NETWORK_DEVICE NETWORK_DEVICE
typedef uint32_t STDCALL(* network_enumerate_cb) (NETWORK_DEVICE *network, void *data)
typedef uint32_t STDCALL(* network_notification_cb) (DEVICE *device, void *data, uint32_t notification)
typedef uint32_t STDCALL(* network_device_open_proc) (NETWORK_DEVICE *network)
typedef uint32_t STDCALL(* network_device_close_proc) (NETWORK_DEVICE *network)
typedef uint32_t STDCALL(* network_device_read_proc) (NETWORK_DEVICE *network, void *buffer, uint32_t size, uint32_t *length)
typedef uint32_t STDCALL(* network_device_write_proc) (NETWORK_DEVICE *network, void *buffer, uint32_t size, uint32_t *length)
typedef uint32_t STDCALL(* network_device_control_proc) (NETWORK_DEVICE *network, int request, size_t argument1, size_t *argument2)
typedef uint32_t STDCALL(* network_buffer_allocate_proc) (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)
typedef uint32_t STDCALL(* network_buffer_release_proc) (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)
typedef uint32_t STDCALL(* network_buffer_receive_proc) (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)
typedef uint32_t STDCALL(* network_buffer_transmit_proc) (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)
typedef struct _NETWORK_EVENT NETWORK_EVENT
typedef uint32_t STDCALL(* network_event_callback_cb) (void *data, uint32_t event)
typedef uint8_t ETHERNET_ADDRESS[ETHERNET_ADDRESS_SIZE]
typedef struct _ETHERNET_HEADER ETHERNET_HEADER
typedef struct _LLC_HEADER LLC_HEADER
typedef struct _SNAP_HEADER SNAP_HEADER

Functions

uint32_t STDCALL network_start (void)
uint32_t STDCALL network_stop (void)
BOOL STDCALL network_start_completed (void)
 Returns True if the network sub system has been started.
uint32_t STDCALL network_device_open (NETWORK_DEVICE *network)
uint32_t STDCALL network_device_close (NETWORK_DEVICE *network)
uint32_t STDCALL network_device_read (NETWORK_DEVICE *network, void *buffer, uint32_t size, uint32_t *length)
uint32_t STDCALL network_device_write (NETWORK_DEVICE *network, void *buffer, uint32_t size, uint32_t *length)
uint32_t STDCALL network_device_control (NETWORK_DEVICE *network, int request, size_t argument1, size_t *argument2)
uint32_t STDCALL network_buffer_allocate (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)
 Allocate a transmit buffer from the specified network device, the returned entry will include a buffer for writing data to as well as an offset value to allow the driver data to be written to the start of the buffer.
uint32_t STDCALL network_buffer_release (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)
 Release a receive buffer to the specified network device, the entry must have been returned from NetworkBufferReceive.
uint32_t STDCALL network_buffer_receive (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)
 Receive a completed receive buffer from the specified network device. The returned entry will contain a one or more packets of data to read from.
uint32_t STDCALL network_buffer_transmit (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)
 Transmit a completed transmit buffer to the specified network device. The entry must have been allocated using NetworkBufferAllocate.
uint32_t STDCALL network_device_set_state (NETWORK_DEVICE *network, uint32_t state)
 Set the state of the specified network and send a notification.
uint32_t STDCALL network_device_set_status (NETWORK_DEVICE *network, uint32_t status)
 Set the status of the specified network and send a notification.
NETWORK_DEVICE *STDCALL network_device_create (void)
 Create a new Network entry.
NETWORK_DEVICE *STDCALL network_device_create_ex (uint32_t size)
 Create a new Network entry.
uint32_t STDCALL network_device_destroy (NETWORK_DEVICE *network)
 Destroy an existing Network entry.
uint32_t STDCALL network_device_register (NETWORK_DEVICE *network)
 Register a new Network in the Network table.
uint32_t STDCALL network_device_deregister (NETWORK_DEVICE *network)
 Deregister a Network from the Network table.
NETWORK_DEVICE *STDCALL network_device_find (uint32_t networkid)
NETWORK_DEVICE *STDCALL network_device_find_by_name (const char *name)
NETWORK_DEVICE *STDCALL network_device_find_by_description (const char *description)
uint32_t STDCALL network_device_enumerate (network_enumerate_cb callback, void *data)
uint32_t STDCALL network_device_notification (NETWORK_DEVICE *network, network_notification_cb callback, void *data, uint32_t notification, uint32_t flags)
NETWORK_EVENT *STDCALL network_event_allocate (network_event_callback_cb callback, void *data, uint32_t event)
 Create and Register a new Event entry in the Event table.
uint32_t STDCALL network_event_release (NETWORK_EVENT *event)
 Deregister and Destroy an Event from the Event table.
HANDLE STDCALL network_event_register (network_event_callback_cb callback, void *data, uint32_t event)
 Register a callback for one or more network events.
uint32_t STDCALL network_event_deregister (HANDLE handle)
 Deregister a network event callback.
uint32_t STDCALL network_event_notify (uint32_t event)
int32_t STDCALL network_get_last_error (void)
 Get the last network error value for the current Thread.
void STDCALL network_set_last_error (int32_t error)
 Set the last network error value for the current Thread.
uint32_t STDCALL network_get_count (void)
 Get the current network count.
NETWORK_DEVICE *STDCALL network_device_check (NETWORK_DEVICE *network)
 Check if the supplied Network is in the network table.
uint32_t STDCALL network_device_type_to_string (uint32_t networktype, char *string, uint32_t len)
uint32_t STDCALL network_device_state_to_string (uint32_t networkstate, char *string, uint32_t len)
uint32_t STDCALL network_device_status_to_string (uint32_t networkstatus, char *string, uint32_t len)
uint32_t STDCALL network_device_state_to_notification (uint32_t state)
 Convert a Network state value into the notification code for device notifications.
uint32_t STDCALL network_device_status_to_notification (uint32_t status)
 Convert a Network status value into the notification code for device notifications.
NETWORK_EVENT *STDCALL network_event_check (NETWORK_EVENT *event)
 Check if the supplied Event is in the event table.
uint32_t STDCALL hardware_address_to_string (HARDWARE_ADDRESS *address, char *separator, char *string, uint32_t len)
void STDCALL string_to_hardware_address (char *string, HARDWARE_ADDRESS *address)
BOOL STDCALL valid_hardware_address (HARDWARE_ADDRESS *address)
void STDCALL random_hardware_address (HARDWARE_ADDRESS *address)
BOOL STDCALL compare_hardware_address (HARDWARE_ADDRESS *address1, HARDWARE_ADDRESS *address2)
BOOL STDCALL compare_hardware_default (HARDWARE_ADDRESS *address)
BOOL STDCALL compare_hardware_broadcast (HARDWARE_ADDRESS *address)
BOOL STDCALL compare_hardware_multicast (HARDWARE_ADDRESS *address)
uint32_t STDCALL adapter_type_to_string (uint16_t _type, char *string, uint32_t len)
uint32_t STDCALL adapter_mode_to_string (uint16_t mode, char *string, uint32_t len)
uint32_t STDCALL adapter_config_to_string (uint16_t config, char *string, uint32_t len)
uint32_t STDCALL adapter_state_to_string (int state, char *string, uint32_t len)
uint32_t STDCALL adapter_status_to_string (int status, char *string, uint32_t len)
uint32_t STDCALL frame_type_to_string (uint16_t _type, char *string, uint32_t len)
uint32_t STDCALL network_media_type_to_string (uint16_t _type, char *string, uint32_t len)
uint32_t STDCALL packet_type_to_string (uint16_t _type, char *string, uint32_t len)
uint32_t STDCALL config_type_to_string (uint16_t _type, char *string, uint32_t len)
uint32_t STDCALL config_command_to_string (uint16_t command, char *string, uint32_t len)
uint32_t STDCALL auth_type_to_string (uint16_t _type, char *string, uint32_t len)
uint32_t STDCALL auth_command_to_string (uint16_t command, char *string, uint32_t len)
uint32_t STDCALL phy_interface_mode_to_string (uint16_t mode, char *string, uint32_t len)
uint32_t STDCALL phy_link_speed_to_string (uint16_t speed, char *string, uint32_t len)
uint32_t STDCALL phy_duplex_mode_to_string (uint16_t mode, char *string, uint32_t len)
uint16_t STDCALL match_string_to_phy_interface_mode (char *mode)

Variables

struct _ETHERNET_HEADER PACKED

Macro Definition Documentation

◆ NETWORK_NAME_PREFIX

#define NETWORK_NAME_PREFIX   "Network"

Name prefix for Network Devices.

Network specific constants

◆ NETWORK_TYPE_NONE

#define NETWORK_TYPE_NONE   0

Network Device Types

◆ NETWORK_TYPE_ETHERNET

#define NETWORK_TYPE_ETHERNET   1

◆ NETWORK_TYPE_TOKENRING

#define NETWORK_TYPE_TOKENRING   2

◆ NETWORK_TYPE_80211

#define NETWORK_TYPE_80211   3

IEEE 802.11 Wireless (WiFi) network.

◆ NETWORK_TYPE_MAX

#define NETWORK_TYPE_MAX   3

◆ NETWORK_STATE_CLOSED

#define NETWORK_STATE_CLOSED   0

Network Device States

◆ NETWORK_STATE_CLOSING

#define NETWORK_STATE_CLOSING   1

◆ NETWORK_STATE_OPENING

#define NETWORK_STATE_OPENING   2

◆ NETWORK_STATE_OPEN

#define NETWORK_STATE_OPEN   3

◆ NETWORK_STATE_MAX

#define NETWORK_STATE_MAX   3

◆ NETWORK_STATUS_DOWN

#define NETWORK_STATUS_DOWN   0

Network Device Status

◆ NETWORK_STATUS_UP

#define NETWORK_STATUS_UP   1

◆ NETWORK_STATUS_MAX

#define NETWORK_STATUS_MAX   1

◆ NETWORK_FLAG_NONE

#define NETWORK_FLAG_NONE   0x00000000

Network Device Flags

◆ NETWORK_FLAG_RX_BUFFER

#define NETWORK_FLAG_RX_BUFFER   0x00000001

Device supports Receive Buffer (NetworkBufferReceive/NetworkBufferRelease).

◆ NETWORK_FLAG_TX_BUFFER

#define NETWORK_FLAG_TX_BUFFER   0x00000002

Device supports Transmit Buffer (NetworkBufferAllocate/NetworkBufferTransmit).

◆ NETWORK_FLAG_RX_MULTIPACKET

#define NETWORK_FLAG_RX_MULTIPACKET   0x00000004

Device supports multiple packets in the same Receive entry.

◆ NETWORK_FLAG_TX_MULTIPACKET

#define NETWORK_FLAG_TX_MULTIPACKET   0x00000008

Device supports multiple packets in the same Transmit entry.

◆ NETWORK_CONTROL_CLEAR_STATS

#define NETWORK_CONTROL_CLEAR_STATS   1

Clear Statistics.

Network Device Control Codes

◆ NETWORK_CONTROL_SET_MAC

#define NETWORK_CONTROL_SET_MAC   2

Set the MAC for this device.

◆ NETWORK_CONTROL_GET_MAC

#define NETWORK_CONTROL_GET_MAC   3

Get the MAC for this device.

◆ NETWORK_CONTROL_SET_LOOPBACK

#define NETWORK_CONTROL_SET_LOOPBACK   4

Set Loopback Mode.

◆ NETWORK_CONTROL_RESET

#define NETWORK_CONTROL_RESET   5

Reset the device.

◆ NETWORK_CONTROL_DISABLE

#define NETWORK_CONTROL_DISABLE   6

Disable the device.

◆ NETWORK_CONTROL_GET_HARDWARE

#define NETWORK_CONTROL_GET_HARDWARE   7

Get Hardware address for this device.

◆ NETWORK_CONTROL_GET_BROADCAST

#define NETWORK_CONTROL_GET_BROADCAST   8

Get Broadcast address for this device.

◆ NETWORK_CONTROL_GET_MTU

#define NETWORK_CONTROL_GET_MTU   9

Get MTU for this device.

◆ NETWORK_CONTROL_GET_HEADERLEN

#define NETWORK_CONTROL_GET_HEADERLEN   10

Get Header length for this device.

◆ NETWORK_CONTROL_GET_LINK

#define NETWORK_CONTROL_GET_LINK   11

Get link status for this device.

◆ NETWORK_CONTROL_GET_SPEED

#define NETWORK_CONTROL_GET_SPEED   12

Get link speed for this device.

◆ NETWORK_CONTROL_GET_DUPLEX

#define NETWORK_CONTROL_GET_DUPLEX   13

Get link speed for this device.

◆ NETWORK_CONTROL_RESET_LINK

#define NETWORK_CONTROL_RESET_LINK   14

Reset link for this device.

◆ NETWORK_CONTROL_GET_STATS

#define NETWORK_CONTROL_GET_STATS   15

Get statistics for this device.

◆ NETWORK_CONTROL_ADD_MULTICAST

#define NETWORK_CONTROL_ADD_MULTICAST   16

Add a multicast address to this device.

◆ NETWORK_CONTROL_DEL_MULTICAST

#define NETWORK_CONTROL_DEL_MULTICAST   17

Delete a multicast address from this device.

◆ NETWORK_CONTROL_GET_MULTICAST

#define NETWORK_CONTROL_GET_MULTICAST   18

Get the list of multicast address for this device.

◆ NETWORK_LINK_DOWN

#define NETWORK_LINK_DOWN   NETWORK_STATUS_DOWN

Network Link States

◆ NETWORK_LINK_UP

#define NETWORK_LINK_UP   NETWORK_STATUS_UP

◆ NETWORK_SPEED_NONE

#define NETWORK_SPEED_NONE   0

Network Speed States

◆ NETWORK_SPEED_10

#define NETWORK_SPEED_10   10

◆ NETWORK_SPEED_100

#define NETWORK_SPEED_100   100

◆ NETWORK_SPEED_1000

#define NETWORK_SPEED_1000   1000

◆ NETWORK_DUPLEX_NONE

#define NETWORK_DUPLEX_NONE   0

Network Duplex States

◆ NETWORK_DUPLEX_HALF

#define NETWORK_DUPLEX_HALF   1

◆ NETWORK_DUPLEX_FULL

#define NETWORK_DUPLEX_FULL   2

◆ NETWORK_LOCK_NONE

#define NETWORK_LOCK_NONE   0

Network Lock States

◆ NETWORK_LOCK_READ

#define NETWORK_LOCK_READ   1

◆ NETWORK_LOCK_WRITE

#define NETWORK_LOCK_WRITE   2

◆ NETWORK_BUFFER_SIZE

#define NETWORK_BUFFER_SIZE   1024

Network Buffer Size

◆ NETWORK_EVENT_NONE

#define NETWORK_EVENT_NONE   0x00000000

Network Events

◆ NETWORK_EVENT_SYSTEM_START

#define NETWORK_EVENT_SYSTEM_START   0x00000001

The network sub system is starting.

◆ NETWORK_EVENT_SYSTEM_STOP

#define NETWORK_EVENT_SYSTEM_STOP   0x00000002

The network sub system has stopped.

◆ NETWORK_EVENT_ADAPTERS_START

#define NETWORK_EVENT_ADAPTERS_START   0x00000004

All network adapters are being started.

◆ NETWORK_EVENT_ADAPTERS_STOP

#define NETWORK_EVENT_ADAPTERS_STOP   0x00000008

All network adapters have been stopped.

◆ NETWORK_EVENT_TRANSPORTS_START

#define NETWORK_EVENT_TRANSPORTS_START   0x00000010

All network transports are being started.

◆ NETWORK_EVENT_TRANSPORTS_STOP

#define NETWORK_EVENT_TRANSPORTS_STOP   0x00000020

All network transports have been stopped.

◆ NETWORK_EVENT_PROTOCOLS_START

#define NETWORK_EVENT_PROTOCOLS_START   0x00000040

All network protocols are being started.

◆ NETWORK_EVENT_PROTOCOLS_STOP

#define NETWORK_EVENT_PROTOCOLS_STOP   0x00000080

All network protocols have been stopped.

◆ NETWORK_EVENT_SIGNATURE

#define NETWORK_EVENT_SIGNATURE   0xBE1D50C2

Network Event Signature

◆ NETWORK_EVENT_STATE_UNREGISTERED

#define NETWORK_EVENT_STATE_UNREGISTERED   0

Network Event States

◆ NETWORK_EVENT_STATE_REGISTERED

#define NETWORK_EVENT_STATE_REGISTERED   1

◆ NETWORK_EVENT_FLAG_NONE

#define NETWORK_EVENT_FLAG_NONE   0x00000000

Network Event Flags

◆ ADAPTER_TYPE_UNKNOWN

#define ADAPTER_TYPE_UNKNOWN   0

Adapter Types

◆ ADAPTER_TYPE_WIRED

#define ADAPTER_TYPE_WIRED   1

◆ ADAPTER_TYPE_LOOPBACK

#define ADAPTER_TYPE_LOOPBACK   2

◆ ADAPTER_TYPE_WIRELESS

#define ADAPTER_TYPE_WIRELESS   3

◆ ADAPTER_TYPE_SLIP

#define ADAPTER_TYPE_SLIP   4

◆ ADAPTER_TYPE_PPP

#define ADAPTER_TYPE_PPP   5

◆ ADAPTER_THREAD_NAME

#define ADAPTER_THREAD_NAME   "Network Adapter"

Thread name for Network adapter threads.

Adapter Threads

◆ ADAPTER_THREAD_PRIORITY

#define ADAPTER_THREAD_PRIORITY   THREAD_PRIORITY_HIGHER

Thread priority for Network adapter threads.

◆ ADAPTER_STATE_DISABLED

#define ADAPTER_STATE_DISABLED   0

Adapter State

◆ ADAPTER_STATE_ENABLED

#define ADAPTER_STATE_ENABLED   1

◆ ADAPTER_STATUS_DOWN

#define ADAPTER_STATUS_DOWN   0

Adapter Status

◆ ADAPTER_STATUS_UP

#define ADAPTER_STATUS_UP   1

◆ CONFIG_TYPE_AUTO

#define CONFIG_TYPE_AUTO   0

Configuration Types

◆ CONFIG_TYPE_STATIC

#define CONFIG_TYPE_STATIC   1

◆ CONFIG_TYPE_RARP

#define CONFIG_TYPE_RARP   2

◆ CONFIG_TYPE_BOOTP

#define CONFIG_TYPE_BOOTP   3

◆ CONFIG_TYPE_DHCP

#define CONFIG_TYPE_DHCP   4

◆ CONFIG_TYPE_PSEUDO

#define CONFIG_TYPE_PSEUDO   5

◆ CONFIG_TYPE_LOOPBACK

#define CONFIG_TYPE_LOOPBACK   6

◆ CONFIG_TYPE_SLIP

#define CONFIG_TYPE_SLIP   7

◆ CONFIG_TYPE_PPP

#define CONFIG_TYPE_PPP   8

◆ CONFIG_TYPE_UNKNOWN

#define CONFIG_TYPE_UNKNOWN   Word(-1)

◆ AUTH_TYPE_UNKNOWN

#define AUTH_TYPE_UNKNOWN   0

Authentication Types

◆ AUTH_TYPE_EAP

#define AUTH_TYPE_EAP   1

◆ AUTH_TYPE_RSN

#define AUTH_TYPE_RSN   2

◆ FRAME_TYPE_UNKNOWN

#define FRAME_TYPE_UNKNOWN   0

Frame Types

◆ FRAME_TYPE_ETHERNET_II

#define FRAME_TYPE_ETHERNET_II   1

Blue Book.

◆ FRAME_TYPE_TOKEN_RING

#define FRAME_TYPE_TOKEN_RING   3

IEEE 802.5.

◆ FRAME_TYPE_APPLETALK

#define FRAME_TYPE_APPLETALK   5

LocalTalk.

◆ FRAME_TYPE_ETHERNET_8022

#define FRAME_TYPE_ETHERNET_8022   11

IEEE 802.2 LLC.

◆ FRAME_TYPE_ETHERNET_SNAP

#define FRAME_TYPE_ETHERNET_SNAP   98

IEEE 802.2 LLC with SNAP Header.

◆ FRAME_TYPE_ETHERNET_8023

#define FRAME_TYPE_ETHERNET_8023   99

802.3 RAW (Novell)

◆ FRAME_START_ETHERNET_SNAP

#define FRAME_START_ETHERNET_SNAP   0xAAAA

◆ FRAME_START_ETHERNET_8023

#define FRAME_START_ETHERNET_8023   0xFFFF

◆ ADAPTER_MODE_NONE

#define ADAPTER_MODE_NONE   1

◆ ADAPTER_MODE_LOCAL

#define ADAPTER_MODE_LOCAL   2

◆ ADAPTER_MODE_BROADCAST

#define ADAPTER_MODE_BROADCAST   3

This is the default.

◆ ADAPTER_MODE_LOCAL_MULTI

#define ADAPTER_MODE_LOCAL_MULTI   4

Mode 3 plus directed Multicast.

◆ ADAPTER_MODE_BROADCAST_MULTI

#define ADAPTER_MODE_BROADCAST_MULTI   5

Mode 3 plus all Multicast.

◆ ADAPTER_MODE_PROMISCUOUS

#define ADAPTER_MODE_PROMISCUOUS   6

Promiscuous mode.

◆ CONFIG_ADAPTER_DISCOVER

#define CONFIG_ADAPTER_DISCOVER   0

Discover an Address from the ConfigHandler.

Configuration Commands

◆ CONFIG_ADAPTER_REQUEST

#define CONFIG_ADAPTER_REQUEST   1

Request an Address from the ConfigHandler.

◆ CONFIG_ADAPTER_RELEASE

#define CONFIG_ADAPTER_RELEASE   2

Release the Address obtained from ConfigHandler.

◆ CONFIG_ADAPTER_RENEW

#define CONFIG_ADAPTER_RENEW   3

Renew the Address obtained from ConfigHandler.

◆ CONFIG_ADAPTER_REBIND

#define CONFIG_ADAPTER_REBIND   4

Rebind the Address obtained from ConfigHandler.

◆ CONFIG_ADAPTER_INFORM

#define CONFIG_ADAPTER_INFORM   5

Obtain information only from the ConfigHandler.

◆ CONFIG_ADAPTER_REBOOT

#define CONFIG_ADAPTER_REBOOT   6

Request previous Address after a Reboot.

◆ CONFIG_RETRY_TIMEOUT

#define CONFIG_RETRY_TIMEOUT   300000

5 min Config Retry Timeout

◆ CONFIG_RENEW_TIMEOUT

#define CONFIG_RENEW_TIMEOUT   60000

1 min Config Renew Timeout

◆ CONFIG_REBIND_TIMEOUT

#define CONFIG_REBIND_TIMEOUT   60000

1 min Config Rebind Timeout

◆ AUTH_COMMAND_ASSOCIATE

#define AUTH_COMMAND_ASSOCIATE   0

Authentication Commands

◆ AUTH_COMMAND_DISASSOCIATE

#define AUTH_COMMAND_DISASSOCIATE   1

◆ AUTH_COMMAND_AUTHENTICATE

#define AUTH_COMMAND_AUTHENTICATE   2

◆ AUTH_COMMAND_UNAUTHENTICATE

#define AUTH_COMMAND_UNAUTHENTICATE   3

◆ MAX_MULTICAST_ADDRESS

#define MAX_MULTICAST_ADDRESS   8

Maximum number of addresses per adapter.

Multicast Addressing

◆ MAX_PHYSICAL_PACKET

#define MAX_PHYSICAL_PACKET   2048

Large enough for all media types.

◆ HARDWARE_ADDRESS_SIZE

#define HARDWARE_ADDRESS_SIZE   6

SizeOf(THardwareAddress).

Hardare Addressing

◆ MEDIA_TYPE_UNKNOWN

#define MEDIA_TYPE_UNKNOWN   0x0000

Media Types

◆ MEDIA_TYPE_ETHERNET

#define MEDIA_TYPE_ETHERNET   0x0001

ARP type of Ethernet Hardware (This value must not change, it is the actual values used by ARP packets).

◆ MEDIA_TYPE_TOKENRING

#define MEDIA_TYPE_TOKENRING   0x0006

ARP type of Token-Ring Hardware (This value must not change, it is the actual values used by ARP packets).

◆ MEDIA_TYPE_IEEE80211

#define MEDIA_TYPE_IEEE80211   0x1000

◆ MEDIA_TYPE_LOOPBACK

#define MEDIA_TYPE_LOOPBACK   0x1001

◆ MEDIA_TYPE_PPP

#define MEDIA_TYPE_PPP   0x1002

◆ MEDIA_TYPE_SLIP

#define MEDIA_TYPE_SLIP   0x1003

◆ PACKET_MIN_TYPE

#define PACKET_MIN_TYPE   0x0600

If the value Ethernet header TypeLength field is greater than this the frame is Ethernet II.

Packet Types

◆ PACKET_TYPE_IP

#define PACKET_TYPE_IP   0x0800

◆ PACKET_TYPE_IP6

#define PACKET_TYPE_IP6   0x86DD

◆ PACKET_TYPE_ARP

#define PACKET_TYPE_ARP   0x0806

◆ PACKET_TYPE_RARP

#define PACKET_TYPE_RARP   0x8035

◆ PACKET_TYPE_8021Q

#define PACKET_TYPE_8021Q   0x8100

802.1Q with extended Ethernet header

◆ PACKET_TYPE_IPX

#define PACKET_TYPE_IPX   0x8137

IPX on EII.

◆ PACKET_TYPE_EAPOL

#define PACKET_TYPE_EAPOL   0x888E

EAP-over-LAN (EAPOL).

◆ PACKET_TYPE_RSN

#define PACKET_TYPE_RSN   0x88C7

RSN pre-authentication.

◆ PACKET_TYPE_TDLS

#define PACKET_TYPE_TDLS   0x890D

Tunneled direct-link setup.

◆ PACKET_TYPE_RAW

#define PACKET_TYPE_RAW   0xFFFF

IPX on 802.3.

◆ PACKET_TYPE_LLC

#define PACKET_TYPE_LLC   0x0001

IPX on 802.2.

◆ MII_BMCR

#define MII_BMCR   0x00

Basic mode control register.

Generic MII registers (Management Interface)

◆ MII_BMSR

#define MII_BMSR   0x01

Basic mode status register.

◆ MII_PHYSID1

#define MII_PHYSID1   0x02

PHYS ID 1.

◆ MII_PHYSID2

#define MII_PHYSID2   0x03

PHYS ID 2.

◆ MII_ADVERTISE

#define MII_ADVERTISE   0x04

Advertisement control reg.

◆ MII_LPA

#define MII_LPA   0x05

Link partner ability reg.

◆ MII_EXPANSION

#define MII_EXPANSION   0x06

Expansion register.

◆ MII_CTRL1000

#define MII_CTRL1000   0x09

1000BASE-T control

◆ MII_STAT1000

#define MII_STAT1000   0x0a

1000BASE-T status

◆ MII_MMD_CTRL

#define MII_MMD_CTRL   0x0d

MMD Access Control Register.

◆ MII_MMD_DATA

#define MII_MMD_DATA   0x0e

MMD Access Data Register.

◆ MII_ESTATUS

#define MII_ESTATUS   0x0f

Extended Status.

◆ MII_DCOUNTER

#define MII_DCOUNTER   0x12

Disconnect counter.

◆ MII_FCSCOUNTER

#define MII_FCSCOUNTER   0x13

False carrier counter.

◆ MII_NWAYTEST

#define MII_NWAYTEST   0x14

N-way auto-neg test reg.

◆ MII_RERRCOUNTER

#define MII_RERRCOUNTER   0x15

Receive error counter.

◆ MII_SREVISION

#define MII_SREVISION   0x16

Silicon revision.

◆ MII_RESV1

#define MII_RESV1   0x17

Reserved...

◆ MII_LBRERROR

#define MII_LBRERROR   0x18

Lpback, rx, bypass error.

◆ MII_PHYADDR

#define MII_PHYADDR   0x19

PHY address.

◆ MII_RESV2

#define MII_RESV2   0x1a

Reserved...

◆ MII_TPISTATUS

#define MII_TPISTATUS   0x1b

TPI status for 10mbps.

◆ MII_NCONFIG

#define MII_NCONFIG   0x1c

Network interface config.

◆ BMCR_RESV

#define BMCR_RESV   0x003f

Unused...

Basic mode control register

◆ BMCR_SPEED1000

#define BMCR_SPEED1000   0x0040

MSB of Speed (1000).

◆ BMCR_CTST

#define BMCR_CTST   0x0080

Collision test.

◆ BMCR_FULLDPLX

#define BMCR_FULLDPLX   0x0100

Full duplex.

◆ BMCR_ANRESTART

#define BMCR_ANRESTART   0x0200

Auto negotiation restart.

◆ BMCR_ISOLATE

#define BMCR_ISOLATE   0x0400

Isolate data paths from MII.

◆ BMCR_PDOWN

#define BMCR_PDOWN   0x0800

Enable low power state.

◆ BMCR_ANENABLE

#define BMCR_ANENABLE   0x1000

Enable auto negotiation.

◆ BMCR_SPEED100

#define BMCR_SPEED100   0x2000

Select 100Mbps.

◆ BMCR_LOOPBACK

#define BMCR_LOOPBACK   0x4000

TXD loopback bits.

◆ BMCR_RESET

#define BMCR_RESET   0x8000

Reset to default state.

◆ BMSR_ERCAP

#define BMSR_ERCAP   0x0001

Ext-reg capability.

Basic mode status register

◆ BMSR_JCD

#define BMSR_JCD   0x0002

Jabber detected.

◆ BMSR_LSTATUS

#define BMSR_LSTATUS   0x0004

Link status.

◆ BMSR_ANEGCAPABLE

#define BMSR_ANEGCAPABLE   0x0008

Able to do auto-negotiation.

◆ BMSR_RFAULT

#define BMSR_RFAULT   0x0010

Remote fault detected.

◆ BMSR_ANEGCOMPLETE

#define BMSR_ANEGCOMPLETE   0x0020

Auto-negotiation complete.

◆ BMSR_RESV

#define BMSR_RESV   0x00c0

Unused...

◆ BMSR_ESTATEN

#define BMSR_ESTATEN   0x0100

Extended Status in R15.

◆ BMSR_100HALF2

#define BMSR_100HALF2   0x0200

Can do 100BASE-T2 HDX.

◆ BMSR_100FULL2

#define BMSR_100FULL2   0x0400

Can do 100BASE-T2 FDX.

◆ BMSR_10HALF

#define BMSR_10HALF   0x0800

Can do 10mbps, half-duplex.

◆ BMSR_10FULL

#define BMSR_10FULL   0x1000

Can do 10mbps, full-duplex.

◆ BMSR_100HALF

#define BMSR_100HALF   0x2000

Can do 100mbps, half-duplex.

◆ BMSR_100FULL

#define BMSR_100FULL   0x4000

Can do 100mbps, full-duplex.

◆ BMSR_100BASE4

#define BMSR_100BASE4   0x8000

Can do 100mbps, 4k packets.

◆ ADVERTISE_SLCT

#define ADVERTISE_SLCT   0x001f

Selector bits.

Advertisement control register

◆ ADVERTISE_CSMA

#define ADVERTISE_CSMA   0x0001

Only selector supported.

◆ ADVERTISE_10HALF

#define ADVERTISE_10HALF   0x0020

Try for 10mbps half-duplex.

◆ ADVERTISE_1000XFULL

#define ADVERTISE_1000XFULL   0x0020

Try for 1000BASE-X full-duplex.

◆ ADVERTISE_10FULL

#define ADVERTISE_10FULL   0x0040

Try for 10mbps full-duplex.

◆ ADVERTISE_1000XHALF

#define ADVERTISE_1000XHALF   0x0040

Try for 1000BASE-X half-duplex.

◆ ADVERTISE_100HALF

#define ADVERTISE_100HALF   0x0080

Try for 100mbps half-duplex.

◆ ADVERTISE_1000XPAUSE

#define ADVERTISE_1000XPAUSE   0x0080

Try for 1000BASE-X pause.

◆ ADVERTISE_100FULL

#define ADVERTISE_100FULL   0x0100

Try for 100mbps full-duplex.

◆ ADVERTISE_1000XPSE_ASYM

#define ADVERTISE_1000XPSE_ASYM   0x0100

Try for 1000BASE-X asym pause.

◆ ADVERTISE_100BASE4

#define ADVERTISE_100BASE4   0x0200

Try for 100mbps 4k packets.

◆ ADVERTISE_PAUSE_CAP

#define ADVERTISE_PAUSE_CAP   0x0400

Try for pause.

◆ ADVERTISE_PAUSE_ASYM

#define ADVERTISE_PAUSE_ASYM   0x0800

Try for asymetric pause.

◆ ADVERTISE_RESV

#define ADVERTISE_RESV   0x1000

Unused...

◆ ADVERTISE_RFAULT

#define ADVERTISE_RFAULT   0x2000

Say we can detect faults.

◆ ADVERTISE_LPACK

#define ADVERTISE_LPACK   0x4000

Ack link partners response.

◆ ADVERTISE_NPAGE

#define ADVERTISE_NPAGE   0x8000

Next page bit.

◆ ADVERTISE_FULL

#define ADVERTISE_FULL   ADVERTISE_100FULL | ADVERTISE_10FULL | ADVERTISE_CSMA

◆ ADVERTISE_ALL

◆ LPA_SLCT

#define LPA_SLCT   0x001f

Same as advertise selector.

Link partner ability register

◆ LPA_10HALF

#define LPA_10HALF   0x0020

Can do 10mbps half-duplex.

◆ LPA_1000XFULL

#define LPA_1000XFULL   0x0020

Can do 1000BASE-X full-duplex.

◆ LPA_10FULL

#define LPA_10FULL   0x0040

Can do 10mbps full-duplex.

◆ LPA_1000XHALF

#define LPA_1000XHALF   0x0040

Can do 1000BASE-X half-duplex.

◆ LPA_100HALF

#define LPA_100HALF   0x0080

Can do 100mbps half-duplex.

◆ LPA_1000XPAUSE

#define LPA_1000XPAUSE   0x0080

Can do 1000BASE-X pause.

◆ LPA_100FULL

#define LPA_100FULL   0x0100

Can do 100mbps full-duplex.

◆ LPA_1000XPAUSE_ASYM

#define LPA_1000XPAUSE_ASYM   0x0100

Can do 1000BASE-X pause asym.

◆ LPA_100BASE4

#define LPA_100BASE4   0x0200

Can do 100mbps 4k packets.

◆ LPA_PAUSE_CAP

#define LPA_PAUSE_CAP   0x0400

Can pause.

◆ LPA_PAUSE_ASYM

#define LPA_PAUSE_ASYM   0x0800

Can pause asymetrically.

◆ LPA_RESV

#define LPA_RESV   0x1000

Unused...

◆ LPA_RFAULT

#define LPA_RFAULT   0x2000

Link partner faulted.

◆ LPA_LPACK

#define LPA_LPACK   0x4000

Link partner acked us.

◆ LPA_NPAGE

#define LPA_NPAGE   0x8000

Next page bit.

◆ LPA_DUPLEX

#define LPA_DUPLEX   LPA_10FULL | LPA_100FULL

◆ LPA_100

#define LPA_100   LPA_100FULL | LPA_100HALF | LPA_100BASE4

◆ EXPANSION_NWAY

#define EXPANSION_NWAY   0x0001

Can do N-way auto-nego.

Expansion register for auto-negotiation

◆ EXPANSION_LCWP

#define EXPANSION_LCWP   0x0002

Got new RX page code word.

◆ EXPANSION_ENABLENPAGE

#define EXPANSION_ENABLENPAGE   0x0004

This enables npage words.

◆ EXPANSION_NPCAPABLE

#define EXPANSION_NPCAPABLE   0x0008

Link partner supports npage.

◆ EXPANSION_MFAULTS

#define EXPANSION_MFAULTS   0x0010

Multiple faults detected.

◆ EXPANSION_RESV

#define EXPANSION_RESV   0xffe0

Unused...

◆ ESTATUS_1000_TFULL

#define ESTATUS_1000_TFULL   0x2000

Can do 1000BT Full.

◆ ESTATUS_1000_THALF

#define ESTATUS_1000_THALF   0x1000

Can do 1000BT Half.

◆ NWAYTEST_RESV1

#define NWAYTEST_RESV1   0x00ff

Unused...

N-way test register

◆ NWAYTEST_LOOPBACK

#define NWAYTEST_LOOPBACK   0x0100

Enable loopback for N-way.

◆ NWAYTEST_RESV2

#define NWAYTEST_RESV2   0xfe00

Unused...

◆ ADVERTISE_1000FULL

#define ADVERTISE_1000FULL   0x0200

Advertise 1000BASE-T full duplex.

1000BASE-T Control register

◆ ADVERTISE_1000HALF

#define ADVERTISE_1000HALF   0x0100

Advertise 1000BASE-T half duplex.

◆ CTL1000_AS_MASTER

#define CTL1000_AS_MASTER   0x0800

◆ CTL1000_ENABLE_MASTER

#define CTL1000_ENABLE_MASTER   0x1000

◆ LPA_1000MSFAIL

#define LPA_1000MSFAIL   0x8000

Master/Slave resolution failure.

1000BASE-T Status register

◆ LPA_1000LOCALRXOK

#define LPA_1000LOCALRXOK   0x2000

Link partner local receiver status.

◆ LPA_1000REMRXOK

#define LPA_1000REMRXOK   0x1000

Link partner remote receiver status.

◆ LPA_1000FULL

#define LPA_1000FULL   0x0800

Link partner 1000BASE-T full duplex.

◆ LPA_1000HALF

#define LPA_1000HALF   0x0400

Link partner 1000BASE-T half duplex.

◆ FLOW_CTRL_TX

#define FLOW_CTRL_TX   0x01

Flow control flags

◆ FLOW_CTRL_RX

#define FLOW_CTRL_RX   0x02

◆ MII_MMD_CTRL_DEVAD_MASK

#define MII_MMD_CTRL_DEVAD_MASK   0x1f

Mask MMD DEVAD.

MMD Access Control register fields

◆ MII_MMD_CTRL_ADDR

#define MII_MMD_CTRL_ADDR   0x0000

Address.

◆ MII_MMD_CTRL_NOINCR

#define MII_MMD_CTRL_NOINCR   0x4000

no post increment

◆ MII_MMD_CTRL_INCR_RDWT

#define MII_MMD_CTRL_INCR_RDWT   0x8000

post increment on reads & writes

◆ MII_MMD_CTRL_INCR_ON_WT

#define MII_MMD_CTRL_INCR_ON_WT   0xC000

post increment on writes only

◆ PHY_LINK_DOWN

#define PHY_LINK_DOWN   0

PHY Link State

◆ PHY_LINK_UP

#define PHY_LINK_UP   1

◆ PHY_LINK_UNKNOWN

#define PHY_LINK_UNKNOWN   -1

◆ PHY_INTERFACE_MODE_NONE

#define PHY_INTERFACE_MODE_NONE   0

PHY Interface Modes

◆ PHY_INTERFACE_MODE_INTERNAL

#define PHY_INTERFACE_MODE_INTERNAL   1

◆ PHY_INTERFACE_MODE_MII

#define PHY_INTERFACE_MODE_MII   2

◆ PHY_INTERFACE_MODE_GMII

#define PHY_INTERFACE_MODE_GMII   3

◆ PHY_INTERFACE_MODE_SGMII

#define PHY_INTERFACE_MODE_SGMII   4

◆ PHY_INTERFACE_MODE_TBI

#define PHY_INTERFACE_MODE_TBI   5

◆ PHY_INTERFACE_MODE_REVMII

#define PHY_INTERFACE_MODE_REVMII   6

◆ PHY_INTERFACE_MODE_RMII

#define PHY_INTERFACE_MODE_RMII   7

◆ PHY_INTERFACE_MODE_RGMII

#define PHY_INTERFACE_MODE_RGMII   8

◆ PHY_INTERFACE_MODE_RGMII_ID

#define PHY_INTERFACE_MODE_RGMII_ID   9

◆ PHY_INTERFACE_MODE_RGMII_RXID

#define PHY_INTERFACE_MODE_RGMII_RXID   10

◆ PHY_INTERFACE_MODE_RGMII_TXID

#define PHY_INTERFACE_MODE_RGMII_TXID   11

◆ PHY_INTERFACE_MODE_RTBI

#define PHY_INTERFACE_MODE_RTBI   12

◆ PHY_INTERFACE_MODE_SMII

#define PHY_INTERFACE_MODE_SMII   13

◆ PHY_INTERFACE_MODE_XGMII

#define PHY_INTERFACE_MODE_XGMII   14

◆ PHY_INTERFACE_MODE_MOCA

#define PHY_INTERFACE_MODE_MOCA   15

◆ PHY_INTERFACE_MODE_QSGMII

#define PHY_INTERFACE_MODE_QSGMII   16

◆ PHY_INTERFACE_MODE_TRGMII

#define PHY_INTERFACE_MODE_TRGMII   17

◆ PHY_INTERFACE_MODE_1000BASEX

#define PHY_INTERFACE_MODE_1000BASEX   18

◆ PHY_INTERFACE_MODE_2500BASEX

#define PHY_INTERFACE_MODE_2500BASEX   19

◆ PHY_INTERFACE_MODE_RXAUI

#define PHY_INTERFACE_MODE_RXAUI   20

◆ PHY_INTERFACE_MODE_XAUI

#define PHY_INTERFACE_MODE_XAUI   21

◆ PHY_INTERFACE_MODE_10GKR

#define PHY_INTERFACE_MODE_10GKR   22

10GBASE-KR, XFI, SFI - single lane 10G Serdes

◆ PHY_INTERFACE_MODE_USXGMII

#define PHY_INTERFACE_MODE_USXGMII   23

◆ PHY_SPEED_10

#define PHY_SPEED_10   10

PHY Link Speeds

◆ PHY_SPEED_100

#define PHY_SPEED_100   100

◆ PHY_SPEED_1000

#define PHY_SPEED_1000   1000

◆ PHY_SPEED_UNKNOWN

#define PHY_SPEED_UNKNOWN   -1

◆ PHY_DUPLEX_HALF

#define PHY_DUPLEX_HALF   0

PHY Duplex Modes

◆ PHY_DUPLEX_FULL

#define PHY_DUPLEX_FULL   1

◆ PHY_DUPLEX_UNKNOWN

#define PHY_DUPLEX_UNKNOWN   -1

◆ SERVICE_SET_UNKNOWN

#define SERVICE_SET_UNKNOWN   0

Service Sets

◆ SERVICE_SET_BSS

#define SERVICE_SET_BSS   1

Basic Service Set.

◆ SERVICE_SET_ESS

#define SERVICE_SET_ESS   2

Extended Service Set.

◆ SERVICE_SET_IBSS

#define SERVICE_SET_IBSS   3

Independent Basic Service Set.

◆ SERVICE_SET_MBSS

#define SERVICE_SET_MBSS   4

Mesh Basic Service Set.

◆ ETHERNET_ADDRESS_SIZE

#define ETHERNET_ADDRESS_SIZE   6

SizeOf(TEthernetAddress).

Ethernet specific constants

◆ ETHERNET_HEADER_SIZE

#define ETHERNET_HEADER_SIZE   14

SizeOf(TEthernetHeader).

◆ ETHERNET_VLAN_SIZE

#define ETHERNET_VLAN_SIZE   4

Length of Ethernet VLAN tag.

◆ ETHERNET_CRC_SIZE

#define ETHERNET_CRC_SIZE   4

Length of Ethernet CRC (FCS).

◆ ETHERNET_MTU

#define ETHERNET_MTU   1500

Ethernet specific sizes

◆ ETHERNET_MIN_PAYLOAD

#define ETHERNET_MIN_PAYLOAD   46

◆ ETHERNET_MIN_PACKET_SIZE

#define ETHERNET_MIN_PACKET_SIZE   ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MIN_PAYLOAD

◆ ETHERNET_MAX_PACKET_SIZE

#define ETHERNET_MAX_PACKET_SIZE   ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MTU

◆ ETHERNET_TRANSMIT_BUFFER_SIZE

#define ETHERNET_TRANSMIT_BUFFER_SIZE   ETHERNET_MAX_PACKET_SIZE

◆ LLC_HEADER_SIZE

#define LLC_HEADER_SIZE   3

SizeOf(TLLCHeader).

Ethernet 802.3 Network

◆ SNAP_HEADER_SIZE

#define SNAP_HEADER_SIZE   5

SizeOf(TSNAPHeader).

Ethernet SNAP Network

Typedef Documentation

◆ HARDWARE_ADDRESS

typedef uint8_t HARDWARE_ADDRESS[HARDWARE_ADDRESS_SIZE]

Network specific types

◆ HARDWARE_ADDRESSES

typedef HARDWARE_ADDRESS HARDWARE_ADDRESSES[]

◆ MULTICAST_ADDRESSES

typedef HARDWARE_ADDRESS MULTICAST_ADDRESSES[MAX_MULTICAST_ADDRESS]

◆ PACKET_FRAGMENT

◆ ADAPTER_STATISTICS

Adapter Statistics

◆ NETWORK_PACKET

Network Packet

◆ NETWORK_BUFFER

Network Buffer

◆ NETWORK_ENTRY

typedef struct _NETWORK_ENTRY NETWORK_ENTRY

Network Entry

◆ NETWORK_QUEUE

typedef struct _NETWORK_QUEUE NETWORK_QUEUE

Network Queue

◆ NETWORK_STATISTICS

Network Statistics (Returned by NETWORK_CONTROL_GET_STATS)

◆ NETWORK_DEVICE

Network Device

◆ network_enumerate_cb

typedef uint32_t STDCALL(* network_enumerate_cb) (NETWORK_DEVICE *network, void *data)

Network Enumeration Callback

◆ network_notification_cb

typedef uint32_t STDCALL(* network_notification_cb) (DEVICE *device, void *data, uint32_t notification)

Network Notification Callback

◆ network_device_open_proc

typedef uint32_t STDCALL(* network_device_open_proc) (NETWORK_DEVICE *network)

Network Device Methods

◆ network_device_close_proc

typedef uint32_t STDCALL(* network_device_close_proc) (NETWORK_DEVICE *network)

◆ network_device_read_proc

typedef uint32_t STDCALL(* network_device_read_proc) (NETWORK_DEVICE *network, void *buffer, uint32_t size, uint32_t *length)

◆ network_device_write_proc

typedef uint32_t STDCALL(* network_device_write_proc) (NETWORK_DEVICE *network, void *buffer, uint32_t size, uint32_t *length)

◆ network_device_control_proc

typedef uint32_t STDCALL(* network_device_control_proc) (NETWORK_DEVICE *network, int request, size_t argument1, size_t *argument2)

◆ network_buffer_allocate_proc

typedef uint32_t STDCALL(* network_buffer_allocate_proc) (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)

◆ network_buffer_release_proc

typedef uint32_t STDCALL(* network_buffer_release_proc) (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)

◆ network_buffer_receive_proc

typedef uint32_t STDCALL(* network_buffer_receive_proc) (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)

◆ network_buffer_transmit_proc

typedef uint32_t STDCALL(* network_buffer_transmit_proc) (NETWORK_DEVICE *network, NETWORK_ENTRY *entry)

◆ NETWORK_EVENT

typedef struct _NETWORK_EVENT NETWORK_EVENT

Network Event

◆ network_event_callback_cb

typedef uint32_t STDCALL(* network_event_callback_cb) (void *data, uint32_t event)

Network Event Callback

◆ ETHERNET_ADDRESS

typedef uint8_t ETHERNET_ADDRESS[ETHERNET_ADDRESS_SIZE]

Ethernet specific types

◆ ETHERNET_HEADER

Ethernet Network

◆ LLC_HEADER

typedef struct _LLC_HEADER LLC_HEADER

Ethernet 802.3 Network

◆ SNAP_HEADER

typedef struct _SNAP_HEADER SNAP_HEADER

Ethernet SNAP Network

Function Documentation

◆ network_start()

uint32_t STDCALL network_start ( void )

Initialization Functions

◆ network_stop()

uint32_t STDCALL network_stop ( void )

◆ network_start_completed()

BOOL STDCALL network_start_completed ( void )

Returns True if the network sub system has been started.

◆ network_device_open()

uint32_t STDCALL network_device_open ( NETWORK_DEVICE * network)

Network Functions

◆ network_device_close()

uint32_t STDCALL network_device_close ( NETWORK_DEVICE * network)

◆ network_device_read()

uint32_t STDCALL network_device_read ( NETWORK_DEVICE * network,
void * buffer,
uint32_t size,
uint32_t * length )

◆ network_device_write()

uint32_t STDCALL network_device_write ( NETWORK_DEVICE * network,
void * buffer,
uint32_t size,
uint32_t * length )

◆ network_device_control()

uint32_t STDCALL network_device_control ( NETWORK_DEVICE * network,
int request,
size_t argument1,
size_t * argument2 )

◆ network_buffer_allocate()

uint32_t STDCALL network_buffer_allocate ( NETWORK_DEVICE * network,
NETWORK_ENTRY * entry )

Allocate a transmit buffer from the specified network device, the returned entry will include a buffer for writing data to as well as an offset value to allow the driver data to be written to the start of the buffer.

When the data has been copied to the buffer, pass the entry to NetworkBufferTransmit

Returns
ERROR_SUCCESS if completed or another error code on failure

◆ network_buffer_release()

uint32_t STDCALL network_buffer_release ( NETWORK_DEVICE * network,
NETWORK_ENTRY * entry )

Release a receive buffer to the specified network device, the entry must have been returned from NetworkBufferReceive.

Returns
ERROR_SUCCESS if completed or another error code on failure

◆ network_buffer_receive()

uint32_t STDCALL network_buffer_receive ( NETWORK_DEVICE * network,
NETWORK_ENTRY * entry )

Receive a completed receive buffer from the specified network device. The returned entry will contain a one or more packets of data to read from.

When the data has been processed pass the returned buffer to NetworkBufferRelease

Returns
ERROR_SUCCESS if completed or another error code on failure

◆ network_buffer_transmit()

uint32_t STDCALL network_buffer_transmit ( NETWORK_DEVICE * network,
NETWORK_ENTRY * entry )

Transmit a completed transmit buffer to the specified network device. The entry must have been allocated using NetworkBufferAllocate.

Returns
ERROR_SUCCESS if completed or another error code on failure

◆ network_device_set_state()

uint32_t STDCALL network_device_set_state ( NETWORK_DEVICE * network,
uint32_t state )

Set the state of the specified network and send a notification.

Parameters
NetworkThe network to set the state for
StateThe new state to set and notify
Returns
ERROR_SUCCESS if completed or another error code on failure

◆ network_device_set_status()

uint32_t STDCALL network_device_set_status ( NETWORK_DEVICE * network,
uint32_t status )

Set the status of the specified network and send a notification.

Parameters
NetworkThe network to set the status for
StatusThe new status to set and notify
Returns
ERROR_SUCCESS if completed or another error code on failure

◆ network_device_create()

NETWORK_DEVICE *STDCALL network_device_create ( void )

Create a new Network entry.

Returns
Pointer to new Network entry or nil if network could not be created

◆ network_device_create_ex()

NETWORK_DEVICE *STDCALL network_device_create_ex ( uint32_t size)

Create a new Network entry.

Parameters
SizeSize in bytes to allocate for new network (Including the network entry)
Returns
Pointer to new Network entry or nil if network could not be created

◆ network_device_destroy()

uint32_t STDCALL network_device_destroy ( NETWORK_DEVICE * network)

Destroy an existing Network entry.

◆ network_device_register()

uint32_t STDCALL network_device_register ( NETWORK_DEVICE * network)

Register a new Network in the Network table.

◆ network_device_deregister()

uint32_t STDCALL network_device_deregister ( NETWORK_DEVICE * network)

Deregister a Network from the Network table.

◆ network_device_find()

NETWORK_DEVICE *STDCALL network_device_find ( uint32_t networkid)

◆ network_device_find_by_name()

NETWORK_DEVICE *STDCALL network_device_find_by_name ( const char * name)

◆ network_device_find_by_description()

NETWORK_DEVICE *STDCALL network_device_find_by_description ( const char * description)

◆ network_device_enumerate()

uint32_t STDCALL network_device_enumerate ( network_enumerate_cb callback,
void * data )

◆ network_device_notification()

uint32_t STDCALL network_device_notification ( NETWORK_DEVICE * network,
network_notification_cb callback,
void * data,
uint32_t notification,
uint32_t flags )

◆ network_event_allocate()

NETWORK_EVENT *STDCALL network_event_allocate ( network_event_callback_cb callback,
void * data,
uint32_t event )

Create and Register a new Event entry in the Event table.

◆ network_event_release()

uint32_t STDCALL network_event_release ( NETWORK_EVENT * event)

Deregister and Destroy an Event from the Event table.

◆ network_event_register()

HANDLE STDCALL network_event_register ( network_event_callback_cb callback,
void * data,
uint32_t event )

Register a callback for one or more network events.

◆ network_event_deregister()

uint32_t STDCALL network_event_deregister ( HANDLE handle)

Deregister a network event callback.

◆ network_event_notify()

uint32_t STDCALL network_event_notify ( uint32_t event)

◆ network_get_last_error()

int32_t STDCALL network_get_last_error ( void )

Get the last network error value for the current Thread.

Network Helper Functions

Returns
Last Network Error or ERROR_SUCCESS if no error

◆ network_set_last_error()

void STDCALL network_set_last_error ( int32_t error)

Set the last network error value for the current Thread.

◆ network_get_count()

uint32_t STDCALL network_get_count ( void )

Get the current network count.

◆ network_device_check()

NETWORK_DEVICE *STDCALL network_device_check ( NETWORK_DEVICE * network)

Check if the supplied Network is in the network table.

◆ network_device_type_to_string()

uint32_t STDCALL network_device_type_to_string ( uint32_t networktype,
char * string,
uint32_t len )

◆ network_device_state_to_string()

uint32_t STDCALL network_device_state_to_string ( uint32_t networkstate,
char * string,
uint32_t len )

◆ network_device_status_to_string()

uint32_t STDCALL network_device_status_to_string ( uint32_t networkstatus,
char * string,
uint32_t len )

◆ network_device_state_to_notification()

uint32_t STDCALL network_device_state_to_notification ( uint32_t state)

Convert a Network state value into the notification code for device notifications.

◆ network_device_status_to_notification()

uint32_t STDCALL network_device_status_to_notification ( uint32_t status)

Convert a Network status value into the notification code for device notifications.

◆ network_event_check()

NETWORK_EVENT *STDCALL network_event_check ( NETWORK_EVENT * event)

Check if the supplied Event is in the event table.

◆ hardware_address_to_string()

uint32_t STDCALL hardware_address_to_string ( HARDWARE_ADDRESS * address,
char * separator,
char * string,
uint32_t len )

◆ string_to_hardware_address()

void STDCALL string_to_hardware_address ( char * string,
HARDWARE_ADDRESS * address )

◆ valid_hardware_address()

BOOL STDCALL valid_hardware_address ( HARDWARE_ADDRESS * address)

◆ random_hardware_address()

void STDCALL random_hardware_address ( HARDWARE_ADDRESS * address)

◆ compare_hardware_address()

BOOL STDCALL compare_hardware_address ( HARDWARE_ADDRESS * address1,
HARDWARE_ADDRESS * address2 )

◆ compare_hardware_default()

BOOL STDCALL compare_hardware_default ( HARDWARE_ADDRESS * address)

◆ compare_hardware_broadcast()

BOOL STDCALL compare_hardware_broadcast ( HARDWARE_ADDRESS * address)

◆ compare_hardware_multicast()

BOOL STDCALL compare_hardware_multicast ( HARDWARE_ADDRESS * address)

◆ adapter_type_to_string()

uint32_t STDCALL adapter_type_to_string ( uint16_t _type,
char * string,
uint32_t len )

◆ adapter_mode_to_string()

uint32_t STDCALL adapter_mode_to_string ( uint16_t mode,
char * string,
uint32_t len )

◆ adapter_config_to_string()

uint32_t STDCALL adapter_config_to_string ( uint16_t config,
char * string,
uint32_t len )

◆ adapter_state_to_string()

uint32_t STDCALL adapter_state_to_string ( int state,
char * string,
uint32_t len )

◆ adapter_status_to_string()

uint32_t STDCALL adapter_status_to_string ( int status,
char * string,
uint32_t len )

◆ frame_type_to_string()

uint32_t STDCALL frame_type_to_string ( uint16_t _type,
char * string,
uint32_t len )

◆ network_media_type_to_string()

uint32_t STDCALL network_media_type_to_string ( uint16_t _type,
char * string,
uint32_t len )

◆ packet_type_to_string()

uint32_t STDCALL packet_type_to_string ( uint16_t _type,
char * string,
uint32_t len )

◆ config_type_to_string()

uint32_t STDCALL config_type_to_string ( uint16_t _type,
char * string,
uint32_t len )

◆ config_command_to_string()

uint32_t STDCALL config_command_to_string ( uint16_t command,
char * string,
uint32_t len )

◆ auth_type_to_string()

uint32_t STDCALL auth_type_to_string ( uint16_t _type,
char * string,
uint32_t len )

◆ auth_command_to_string()

uint32_t STDCALL auth_command_to_string ( uint16_t command,
char * string,
uint32_t len )

◆ phy_interface_mode_to_string()

uint32_t STDCALL phy_interface_mode_to_string ( uint16_t mode,
char * string,
uint32_t len )

◆ phy_link_speed_to_string()

uint32_t STDCALL phy_link_speed_to_string ( uint16_t speed,
char * string,
uint32_t len )

◆ phy_duplex_mode_to_string()

uint32_t STDCALL phy_duplex_mode_to_string ( uint16_t mode,
char * string,
uint32_t len )

◆ match_string_to_phy_interface_mode()

uint16_t STDCALL match_string_to_phy_interface_mode ( char * mode)

Variable Documentation

◆ PACKED

struct _SNAP_HEADER PACKED