⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zipv4.h

📁 uCOSII上实现的tcpip协议实现代码(gcc编译)
💻 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 + -