?? zipv4.h
字號:
#ifndef _ZIPV4_H#define _ZIPV4_H#include "zarch.h"#include "zdef.h"#include "zbuffer.h"#include "znetif.h"#define ETH_HEAD_LEN 14#define IP_HEAD_LEN 20#define IP_PROTO_ICMP 1#define IP_PROTO_UDP 17#define IP_PROTO_UDPLITE 170#define IP_PROTO_TCP 6#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */#define IP_MF 0x2000 /* more fragments flag */#define IP_DF 0x4000 /* dont fragment flag */STRUCT_BEGINtypedef struct _ip_header { u16_t _v_hl_tos; u16_t _len; /* identification */ u16_t _id; /* fragment offset field */ u16_t _offset; /* time to live / protocol*/ u16_t _ttl_proto; /* checksum */ u16_t _chksum; /* source and destination IP addresses */ ipaddr_t src_ipaddr; ipaddr_t dest_ipaddr;}ip_header_t;STRUCT_END#define NTOHS #define HTONS#define IPH_V(hdr) (NTOHS((hdr)->_v_hl_tos) >> 12)#define IPH_HL(hdr) ((NTOHS((hdr)->_v_hl_tos) >> 8) & 0x0f)#define IPH_TOS(hdr) HTONS((NTOHS((hdr)->_v_hl_tos) & 0xff))#define IPH_LEN(hdr) ((hdr)->_len)#define IPH_ID(hdr) ((hdr)->_id)#define IPH_OFFSET(hdr) ((hdr)->_offset)#define IPH_TTL(hdr) (NTOHS((hdr)->_ttl_proto) >> 8)#define IPH_PROTO(hdr) (NTOHS((hdr)->_ttl_proto) & 0xff)#define IPH_CHKSUM(hdr) ((hdr)->_chksum)#define IPH_VHLTOS_SET(hdr, v, hl, tos) (hdr)->_v_hl_tos = HTONS(((v) << 12) | ((hl) << 8) | (tos))#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len)#define IPH_ID_SET(hdr, id) (hdr)->_id = (id)#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off)#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl_proto = HTONS(IPH_PROTO(hdr) | ((ttl) << 8))#define IPH_PROTO_SET(hdr, proto) (hdr)->_ttl_proto = HTONS((proto) | (IPH_TTL(hdr) << 8))#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum)#define ip_addr_maskcmp(addr1, addr2, mask) (((addr1) & \ (mask)) == \ ((addr2) & \ (mask))) #define ip_addr_isbroadcast(addr1, mask) (((((addr1)) & ~((mask))) == \ (0xffffffff & ~((mask)))) || \ ((addr1) == 0xffffffff) || \ ((addr1) == 0x00000000))#define ip_addr_ismulticast(addr1) (((addr1) & ntohl(0xf0000000)) == ntohl(0xe0000000))extern u8_t ip_input(znetif_t *pnetif, zbuffer_t *pbuffer);extern u16_t inet_chksum(void *pdata, u16_t len);extern u16_t inet_chksum_pseudo(zbuffer_t *, ipaddr_t *, ipaddr_t *, u8_t, u16_t);extern u16_t ip_id;#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -