Collaboration diagram for IP:
Before using IP based protocols, you must have registered a network device driver like PPP or one of the supported Ethernet controller drivers.
You must also have configured the IP network interface with NutDhcpIfConfig() or NutNetIfConfig().
Typical applications do not use the IP layer directly, but call the UDP Socket API or the TCP Socket API. A Raw IP API is currently not supported.
Data Structures | |
struct | ifnet |
Network interface structure. More... | |
struct | ip |
Structure of an internet header. More... | |
struct | pseudo_hdr |
struct | ifnet |
Network interface structure. More... | |
Defines | |
#define | IPVERSION 4 |
IP protocol version. | |
#define | IP_DF 0x4000 |
Don't fragment flag. | |
#define | IP_MF 0x2000 |
More fragments flag. | |
#define | IP_OFFMASK 0x1fff |
Mask for fragmenting bits. | |
#define | IPOPT_EOL 0 |
End of option list. | |
#define | IPOPT_NOP 1 |
No operation. | |
#define | IPOPT_RR 7 |
Record packet route. | |
#define | IPOPT_TS 68 |
Timestamp. | |
#define | IPOPT_SECURITY 130 |
Provide s,c,h,tcc. | |
#define | IPOPT_LSRR 131 |
Loose source route. | |
#define | IPOPT_SATID 136 |
Satnet id. | |
#define | IPOPT_SSRR 137 |
Strict source route. | |
#define | IPOPT_OPTVAL 0 |
Option identifier offset. | |
#define | IPOPT_OLEN 1 |
Option length offset. | |
#define | IPOPT_OFFSET 2 |
Offset within option. | |
#define | IPOPT_MINOFF 4 |
Minimum offset within option. | |
#define | MAXTTL 255 |
Maximum time to live (seconds). | |
#define | IPDEFTTL 64 |
Default time to live. | |
#define | IPFRAGTTL 60 |
Time to live for fragments. | |
#define | IPTTLDEC 1 |
Subtracted from time to live when forwarding. | |
Typedefs | |
typedef ifnet | IFNET |
Network interface type. | |
typedef ip | IPHDR |
Internet header type. | |
Functions | |
int | NutNetIfSetup (NUTDEVICE *dev, u_long ip_addr, u_long ip_mask, u_long gateway) |
Network interface setup. | |
int | NutNetIfConfig (CONST char *name, void *params, u_long ip_addr, u_long ip_mask) |
Configure a network interface. | |
int | NutNetIfConfig2 (CONST char *name, void *params, u_long ip_addr, u_long ip_mask, u_long gateway) |
Configure a network interface including the default gateway. | |
u_long | inet_addr (CONST char *str) |
Convert decimal dotted ASCII representation into numeric IP address. | |
char * | inet_ntoa (u_long addr) |
Convert numeric IP address into decimal dotted ASCII representation. | |
u_short | NutIpChkSumPartial (u_short ics, CONST void *buf, size_t len) |
Calculate a partial IP checksum of a buffer. | |
u_short | NutIpChkSum (u_short ics, CONST void *buf, size_t len) |
Calculates an the final IP checksum over a block of data. | |
u_long | NutIpPseudoChkSumPartial (u_long src_addr, u_long dest_addr, u_char protocol, u_short len) |
Calculates the partial IP pseudo checksum. | |
void | NutIpSetInputFilter (NutIpFilterFunc callbackFunc) |
Set filter function for incoming IP datagrams. | |
void | NutIpInput (NUTDEVICE *dev, NETBUF *nb) |
Process incoming IP datagrams. | |
int | NutIpOutput (u_char proto, u_long dest, NETBUF *nb) |
Send IP datagram. | |
int | NutIpRouteAdd (u_long ip, u_long mask, u_long gate, NUTDEVICE *dev) |
Add a new entry to the IP routing table. | |
int | NutIpRouteDelAll (NUTDEVICE *dev) |
Delete all route table entries for the given device. | |
int | NutIpRouteDel (u_long ip, u_long mask, u_long gate, NUTDEVICE *dev) |
Delete the specified route table entry. | |
RTENTRY * | NutIpRouteList (int *numEntries) |
Return an array of RTENTRY structures which contain all the current route table entries. | |
NUTDEVICE * | NutIpRouteQuery (u_long ip, u_long *gate) |
Find a device associated with a particular IP route. | |
Variables | |
RTENTRY * | rteList |
|
Network interface setup.
|
|
Configure a network interface. Devices must have been registered by NutRegisterDevice() before calling this function. For Ethernet devices applications may alternatively call NutDhcpIfConfig(), which allows automatic configuration by DHCP or the so called ARP method.
|
|
Configure a network interface including the default gateway. Devices must have been registered by NutRegisterDevice() before calling this function. For Ethernet devices applications may alternatively call NutDhcpIfConfig(), which allows automatic configuration by DHCP or the so called ARP method.
|
|
Convert decimal dotted ASCII representation into numeric IP address.
|
|
Convert numeric IP address into decimal dotted ASCII representation.
|
|
Calculate a partial IP checksum of a buffer. The caller must create the one's complement of the final result.
|
|
Calculates an the final IP checksum over a block of data. Unlike the partial checksum in NutIpChkSumPartial(), this function takes the one's complement of the final result, thus making it the full checksum. |
|
Set filter function for incoming IP datagrams. The callbackFunc is called by the IP layer on every incoming IP datagram. Thus it must not block. The implementer returns 0 for allow, -1 for deny. It is recommended to set the filer after DHCP has done its thing, just in case your DHCP server is on a different subnet for example.
|
|
Process incoming IP datagrams. Datagrams addressed to other destinations and datagrams whose version number is not 4 are silently discarded.
|
|
Send IP datagram. Route an IP datagram to the proper interface. The function will not return until the data has been stored in the network device hardware for transmission. If the device is not ready for transmitting a new packet, the calling thread will be suspended until the device becomes ready again. If the hardware address of the target host needs to be resolved the function will be suspended too.
|
|
Add a new entry to the IP routing table. Note, that there is currently no support for detecting duplicates. Anyway, newer entries will be found first, because they are inserted in front of older entries. However, this works only for equal masks, i.e. new network routes will never overwrite old host routes.
|
|
Delete all route table entries for the given device.
|
|
Delete the specified route table entry. All fields must exactly match an existing entry.
|
|
Return an array of RTENTRY structures which contain all the current route table entries. The calling function is responsible for deleting the array.
|
|
Find a device associated with a particular IP route. Gateway routes will be automatically resolved up to four levels of redirection.
|
|
Linked list of routing entries. |