BSD基于IP的新协议实现(教学用)

2009-05-13 01:37:47来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

抄袭,抄袭啊.拿来BSD代码,抄袭一遍就成自己的了.不过还好,只是我用来教学用的.仅仅是备课
头文件:
new.h-----定义协议头部
#ifndef _NETINET_NEW_H_  
#define _NETINET_NEW_H_
/*
* 新协议头部
*  RFC 还没编, 10,30, 2003.
*/
struct newhdr {
u_int16_t nh_sport;  /* 源端口 */
u_int16_t nh_dport;  /* 目的端口 */
u_int16_t nh_ulen;  /* new包的长度 */
u_int16_t nh_res;  /* 保留 */
};
#endif /* _NETINET_NEW_H_ */
-------------------------------------------------------------------------------------------------------------------------------------------------------
new_var.h
#ifndef _NETINET_NEW_VAR_H_
#define _NETINET_NEW_VAR_H_
/*
* NEW 核心结构和一些变量.
*/
struct newiphdr {         /*一个IP和NEW协议连续的头部*/
struct ipovly ui_i;  /* 该结构在ip_var.h中,实际上是一IP头部的一部分 */
struct newhdr ui_u;  /* new 头部 */
};
#define ui_x1  ui_i.ih_x1 /*有九个空字节的数组*/
#define ui_pr  ui_i.ih_pr /*协议号,我们的是IPPROTO_NEW,即113*/
#define ui_len  ui_i.ih_len/*IP头部长度*/
#define ui_src  ui_i.ih_src/*IP的源地址*/
#define ui_dst  ui_i.ih_dst/*IP的目的地址*/
#define ui_sport ui_u.nh_sport/*协议的源端口号*/
#define ui_dport ui_u.nh_dport/*协议的目的端口号*/
#define ui_ulen  ui_u.nh_nlen/*我们协议的包的长度*/
#define ui_sum  ui_u.nh_res/*保留*/
struct newstat {/*我们协议的一些状态统计*/
    /* 输入情况: */
u_long news_ipackets;  /* 总共输入的包数量 */
u_long news_hdrops;  /* 比头部还短的包数 */
u_long news_badlen;  /* 数据的长度比分组的长度还大的 */
u_long news_noport;  /* 端口上没有SOCKET侦听的 */
u_long news_noportbcast; /* 和上面一样,但是是广播包 */
u_long news_pcbhashmiss; /* 进入的包丢失了HASH */
    /* 输出情况 */
u_long udps_opackets;  /* 总共输出包的数量 */
};
/*
* NEW协议的sysctl对象名
*/
#define NEWCTL_BADDYNAMIC 1 /* 返回不可用的动态端口位图 */
#define NEWCTL_RECVSPACE 2 /* 控制接收缓冲区大小 */
#define NEWCTL_SENDSPACE 3 /* 控制发送的缓冲区大小 */
#define NEWCTL_MAXID  4
#define NEWCTL_NAMES {
{ 0, 0 },
{ "baddynamic", CTLTYPE_STRUCT },
{ "recvspace",  CTLTYPE_INT },
{ "sendspace",  CTLTYPE_INT },
}
#ifdef _KERNEL
  extern struct inpcbtable newtable;/*PCB链表,主要记录了端口和用户进程的对应情况*/
  extern struct newstat newstat;/*我们协议的统计状态*/
  /*我们不支持IPV6*/
  void  *new_ctlinput(int, struct sockaddr *, void *);
  void  new_init(void);

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:通用地址冗余协议---OPENBSD CARP

下一篇:BSD系统调用规范