|
KallistiOS git master
Independent SDK for the Sega Dreamcast
|
Network support. More...
Go to the source code of this file.
Data Structures | |
| struct | netif_t |
| Structure describing one usable network device. More... | |
| struct | ip_hdr_t |
| IPv4 Packet header. More... | |
| struct | ipv6_hdr_t |
| IPv6 Packet header. More... | |
| struct | net_ipv4_stats_t |
| IPv4 statistics structure. More... | |
| struct | net_ipv6_stats_t |
| IPv6 statistics structure. More... | |
| struct | net_udp_stats_t |
| UDP statistics structure. More... | |
Macros | |
| #define | NETIF_NO_FLAGS 0x00000000 |
| No flags set. | |
| #define | NETIF_REGISTERED 0x00000001 |
| Is it registered? | |
| #define | NETIF_DETECTED 0x00000002 |
| Is it detected? | |
| #define | NETIF_INITIALIZED 0x00000004 |
| Has it been initialized? | |
| #define | NETIF_RUNNING 0x00000008 |
| Has start() been called? | |
| #define | NETIF_PROMISC 0x00010000 |
| Promiscuous mode. | |
| #define | NETIF_NEEDSPOLL 0x01000000 |
| Needs to be polled for input. | |
| #define | NETIF_NOETH 0x10000000 |
| Does not use ethernet. | |
| #define | NETIF_TX_OK 0 |
| Tx success. | |
| #define | NETIF_TX_ERROR -1 |
| Tx general error. | |
| #define | NETIF_TX_AGAIN -2 |
| Retry Tx later. | |
| #define | NETIF_NOBLOCK 0 |
| Don't block for Tx. | |
| #define | NETIF_BLOCK 1 |
| Blocking is OK for Tx. | |
| #define | ICMP_PROTOCOL_UNREACHABLE 2 |
| Protocol unreachable. | |
| #define | ICMP_PORT_UNREACHABLE 3 |
| Port unreachable. | |
| #define | ICMP_REASSEMBLY_TIME_EXCEEDED 1 |
| Valid values for the code in the net_icmp_send_time_exceeded() function. | |
| #define | ICMP6_DEST_UNREACH_NO_ROUTE 0 |
| No route available. | |
| #define | ICMP6_DEST_UNREACH_PROHIBITED 1 |
| Access prohibited. | |
| #define | ICMP6_DEST_UNREACH_BEYOND_SCOPE 2 |
| Gone beyond scope. | |
| #define | ICMP6_DEST_UNREACH_ADDR_UNREACH 3 |
| Address unreachable. | |
| #define | ICMP6_DEST_UNREACH_PORT_UNREACH 4 |
| Port unreachable. | |
| #define | ICMP6_DEST_UNREACH_FAIL_EGRESS 5 |
| Egress failure. | |
| #define | ICMP6_DEST_UNREACH_BAD_ROUTE 6 |
| Bad route specified. | |
| #define | ICMP6_TIME_EXCEEDED_HOPS_EXC 0 |
| Hops exceeded. | |
| #define | ICMP6_TIME_EXCEEDED_FRAGMENT 1 |
| Reassembly time gone. | |
| #define | ICMP6_PARAM_PROB_BAD_HEADER 0 |
| Malformed header. | |
| #define | ICMP6_PARAM_PROB_UNK_HEADER 1 |
| Unknown header. | |
| #define | ICMP6_PARAM_PROB_UNK_OPTION 2 |
| Unknown header option. | |
Typedefs | |
| typedef int(* | net_input_func) (netif_t *nif, const uint8 *pkt, int len) |
| Network input callback type. | |
| typedef void(* | net_echo_cb) (const uint8 *ip, uint16 seq, uint64 delta_us, uint8 ttl, const uint8 *data, size_t len) |
| ICMPv4 echo reply callback type. | |
| typedef void(* | net6_echo_cb) (const struct in6_addr *ip, uint16 seq, uint64 delta_us, uint8 hlim, const uint8 *data, size_t len) |
| ICMPv6 echo reply callback type. | |
Functions | |
| int | net_arp_init (void) |
| Init ARP. | |
| void | net_arp_shutdown (void) |
| Shutdown ARP. | |
| int | net_arp_insert (netif_t *nif, const uint8 mac[6], const uint8 ip[4], uint64 timestamp) |
| Add an entry to the ARP cache manually. | |
| int | net_arp_lookup (netif_t *nif, const uint8 ip_in[4], uint8 mac_out[6], const ip_hdr_t *pkt, const uint8 *data, int data_size) |
| Look up an entry from the ARP cache. | |
| int | net_arp_revlookup (netif_t *nif, uint8 ip_out[4], const uint8 mac_in[6]) |
| Do a reverse ARP lookup. | |
| int | net_arp_input (netif_t *nif, const uint8 *pkt, int len) |
| Receive an ARP packet and process it (called by net_input). | |
| int | net_arp_query (netif_t *nif, const uint8 ip[4]) |
| Generate an ARP who-has query on the given device. | |
| int | net_input (netif_t *device, const uint8 *data, int len) |
| Device drivers should call this function to submit packets received in the background. | |
| net_input_func | net_input_set_target (net_input_func t) |
| Setup a network input target. | |
| int | net_icmp_send_echo (netif_t *net, const uint8 ipaddr[4], uint16 ident, uint16 seq, const uint8 *data, size_t size) |
| Send an ICMP Echo packet to the specified IP. | |
| int | net_icmp_send_dest_unreach (netif_t *net, uint8 code, const uint8 *msg) |
| Send an ICMP Destination Unreachable packet in reply to the given message. | |
| int | net_icmp_send_time_exceeded (netif_t *net, uint8 code, const uint8 *msg) |
| Send an ICMP Time Exceeded packet in reply to the given message. | |
| net_ipv4_stats_t | net_ipv4_get_stats (void) |
| Retrieve statistics from the IPv4 layer. | |
| uint32 | net_ipv4_address (const uint8 addr[4]) |
| Create a 32-bit IP address, based on the individual numbers contained within the IP. | |
| void | net_ipv4_parse_address (uint32 addr, uint8 out[4]) |
| Parse an IP address that is packet into a uint32 into an array of the individual bytes. | |
| int | net_icmp6_send_echo (netif_t *net, const struct in6_addr *dst, uint16 ident, uint16 seq, const uint8 *data, size_t size) |
| Send an ICMPv6 Echo (PING6) packet to the specified device. | |
| int | net_icmp6_send_nsol (netif_t *net, const struct in6_addr *dst, const struct in6_addr *target, int dupdet) |
| Send a Neighbor Solicitation packet on the specified device. | |
| int | net_icmp6_send_nadv (netif_t *net, const struct in6_addr *dst, const struct in6_addr *target, int sol) |
| Send a Neighbor Advertisement packet on the specified device. | |
| int | net_icmp6_send_rsol (netif_t *net) |
| Send a Router Solicitation request on the specified interface. | |
| int | net_icmp6_send_dest_unreach (netif_t *net, uint8 code, const uint8 *ppkt, size_t psz) |
| Send a destination unreachable packet on the specified interface. | |
| int | net_icmp6_send_time_exceeded (netif_t *net, uint8 code, const uint8 *ppkt, size_t psz) |
| Send a time exceeded message on the specified interface. | |
| int | net_icmp6_send_param_prob (netif_t *net, uint8 code, uint32 ptr, const uint8 *ppkt, size_t psz) |
| Send an ICMPv6 Parameter Problem about the given packet. | |
| net_ipv6_stats_t | net_ipv6_get_stats (void) |
| Retrieve statistics from the IPv6 layer. | |
| int | net_ndp_init (void) |
| Init NDP. | |
| void | net_ndp_shutdown (void) |
| Shutdown NDP. | |
| void | net_ndp_gc (void) |
| Garbage collect timed out NDP entries. | |
| int | net_ndp_insert (netif_t *nif, const uint8 mac[6], const struct in6_addr *ip, int unsol) |
| Add an entry to the NDP cache. | |
| int | net_ndp_lookup (netif_t *net, const struct in6_addr *ip, uint8 mac_out[6], const ipv6_hdr_t *pkt, const uint8 *data, int data_size) |
| Look up an entry from the NDP cache. | |
| net_udp_stats_t | net_udp_get_stats (void) |
| Retrieve statistics from the UDP layer. | |
| int | net_udp_init (void) |
| Init UDP. | |
| void | net_udp_shutdown (void) |
| Shutdown UDP. | |
| int | net_tcp_init (void) |
| Init TCP. | |
| void | net_tcp_shutdown (void) |
| Shutdown TCP. | |
| uint32 | net_crc32le (const uint8 *data, int size) |
| Calculate a "little-endian" CRC-32 over a block of data. | |
| uint32 | net_crc32be (const uint8 *data, int size) |
| Calculate a "big-endian" CRC-32 over a block of data. | |
| uint16 | net_crc16ccitt (const uint8 *data, int size, uint16 start) |
| Calculate a CRC16-CCITT over a block of data. | |
| int | net_multicast_add (const uint8 mac[6]) |
| Add a entry to our multicast list. | |
| int | net_multicast_del (const uint8 mac[6]) |
| Delete a entry from our multicast list. | |
| int | net_multicast_check (const uint8 mac[6]) |
| Check if an address is on the multicast list. | |
| int | net_multicast_init (void) |
| Init multicast support. | |
| void | net_multicast_shutdown (void) |
| Shutdown multicast support. | |
| struct netif_list * | net_get_if_list (void) |
| Function to retrieve the interface list. | |
| netif_t * | net_set_default (netif_t *n) |
| Set our default device to an arbitrary device. | |
| int | net_reg_device (netif_t *device) |
| Register a network device. | |
| int | net_unreg_device (netif_t *device) |
| Unregister a network device. | |
| int | net_init (uint32 ip) |
| Init network support. | |
| void | net_shutdown (void) |
| Shutdown network support. | |
Variables | |
| net_input_func | net_input_target |
| Where will input packets be routed? | |
| net_echo_cb | net_icmp_echo_cb |
| Where will we handle possibly notifying the user of ping replies? | |
| net6_echo_cb | net_icmp6_echo_cb |
| Where will we handle possibly notifying the user of ping replies? | |
| struct netif_list | net_if_list |
| Interface list; note: do not manipulate directly! | |
| netif_t * | net_default_dev |
| The default network device, used with sockets (read-only). | |
Network support.
This file contains declarations related to networking support.