ip.h

 
/*
*name:jiangtao
*WuhanUniversity  
*Copyright(c)2011  All right reserve
*@(#)ip.h		 1.0.0 (jiangtao) 2011-8-2
*/

#ifndef  _IP_H
#define  _IP_H


#include"type.h"


#define ICMP			1  
#define TCP				6
#define UDP				17
#define MTU				1500
#define IPVERSION		4
#define FAIL			0
#define SUCC			1
#define LEN				20
#define IP_DF			0x4000
#define IP_MF			0x2000				//more fragment
#define RIGHTSUM		0xFFFF
#define BROADCAST       (INT32U) 0xFFFFFFFF	   //broadcast
#define SELF			(INT32U) 0x00000000	  //self
#define MAXBUF          /**mbuf能存储的最大单元**/
INT16U  ip_id			;



#define mtod(m,t)   ((t)((m)->m_data))
typedef struct ip_addr
{
	INT32U			s_addr;
}ip_addr;
typedef struct ip_head
{
	INT8U			versionLength   ;
	INT8U			tos     ; 		//TCP,UDP,ICMP
	INT16U			length			;
	INT16U			id				;		//identification
	INT16U			off				;
	INT8U			ttl				;
	INT8U			protocol		;
	INT16U			sum				;
	struct ip_addr  srcAddr			;
	struct ip_addr 	dstAddr			;
}ip_head;
typedef struct ipInfo
{

INT8U		tos;//8位服务类型
INT16U		len;//16位全长
INT8U		ttl;//8位生存时间
INT8U		pro;//8位协议	
struct  ip_addr  ipSrc;//32位源地址
struct  ip_addr	 ipDst;//32位目的IP地址
}ipInfo;
typedef struct ipq 
{
	struct ipq *next ,*prev;
	INT8U	ttl;
	INT8U	protocol;
	INT8U	id;
	struct	ipfrag * nextfrag ,*prevfrag;
	struct	ip_addr srcAddr ,dstAddr	 ;
}ipq;
typedef struct ipfrag
{
	INT8U			versionLenth	;
	INT8U			mff				;
	INT16U			length			;
	INT16U			id				;//identification
	INT16U			off				;
	INT8U			ttl				;
	INT8U			protocol		;
	INT16U			sum				;
	struct			ipfrag* next	;
	struct			ipfrag* prev	;
}ipfrag;

INT8U  IP_output(struct mbuf*  p_buf , struct ipInfo*  p_info) ;
INT8U IP_input(struct mbuf* p_buf)								;
struct ip_head* Head_initiate(struct ip_head* head,struct ipInfo* p_info)	;
INT8U  Head_remove(struct mbuf * p_buf)							;
INT8U  Fragment(struct mbuf* p_buf)								;
struct mbuf*  Reassemble(struct mbuf*  p_buf)					;
INT16U  Checksum(struct ip_head* head , INT8U  len)				;
#endif

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值