BSD基于IP的新协议实现(教学用)
2009-05-13 01:37:47来源:未知 阅读 ()
头文件:
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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:BSD系统调用规范
- FreeBSD下nginx+fast-cgi+mysql+zend的实现 2009-05-13
- 问一下:ipfw+natd 如何实现回流端口映射 2009-05-13
- Carp+IPVS实现热备及负载均衡freebsd 6.4 2009-05-13
- freebsd 7.1 CARP实现热备+负载均衡 2009-05-13
- 利用PF来实现多路由表 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash