- 博客(33)
- 收藏
- 关注
原创 又一个半年
首先吐槽博客的编辑功能,实现不敢恭维,写个博客,格式编辑半天还不对。 不管怎样,总算把路由的一些学习分析传上来了,word复制过来各种问题; 路由的学习路上,感谢各种博客大神的分享,也将自己的所学分享出来,希望能够帮助刚接触的同学。 在公司虽然接触的比较杂,但也学到了一些好玩的linux模块; 后面也不定时的分享些笔记,有时间将整理的一些桥、IP分片重组的传上来。
2016-08-19 00:57:52
456
原创 linux内核 策略路由之删除
4.5 策略规则的删除 策略规则一般是通过应用层手动添加的,没有垃圾回收机制,只能通过手动删除操作。 功能: (1)根据应用层传递的协议类型,获取相对应的fib_rule_ops (2)对应用层传参进行解析; (3)遍历rule_list链表,删除匹配的fib_rule static int fib_nl_delrul
2016-08-19 00:38:37
1832
原创 linux内核 策略路由之查找
4.4.1 策略路由查找 策略规则的查找函数fib_rules_lookup 功能: (1)遍历rules_list链表; (2)调用fib_rule_match进行规则匹配 (3)调用函数指针action,进行路由表项的查找; (4)将arg->rule指向该规则的首地址。 //通用规则的查找 //ops 传入 //
2016-08-19 00:36:09
1659
原创 linux内核 策略路由之添加
4.3策略规则的添加 对于策略规则的添加,也可以抽象出通用规则接口函数,然后根据传参进入协议相关的策略规则的接口函数; 4.3.1 通用规则的添加 在规则初始化时,会注册添加函数fib_nl_newrule rtnl_register(PF_UNSPEC, RTM_NEWRULE, fib_nl_newrule, NULL);
2016-08-19 00:32:46
2759
原创 linux内核 策略路由之初始化
4.2 路由策略初始化 路由策略的初始化,主要分为通用策略规则初始化和协议相关的策略规则初始化。 4.2.1 通用策略规则初始化 功能:注册通知链,包括设备注册和注销时的通知。 static int __init fib_rules_init(void) { int err; rtnl_register(PF_UNSPEC, RTM_NEWR
2016-08-19 00:25:20
1686
原创 linux内核 策略路由之基本结构
四、LINUX策略规则 4.1 基本结构体 4.1.1策略规则结构体fib_rule struct fib_rule { struct list_head list;//策 略 规 则 链 表 atomic_t refcnt;//引 用 计 数 int ifindex;//接 口 index char ifna
2016-08-19 00:18:11
1433
原创 linux内核 路由缓存表之数据结构
三、路由缓存表 3.1 基本结构 (1)路由缓存存放在全局散列表rt_hash_table中,类型为rt_hash_bucket,该成员变量指向缓存元素。 struct rt_hash_bucket { struct rtable *chain; }; (2)rtable结构 用来储存缓存中的路由表项,可以通
2016-08-19 00:01:57
1934
原创 linux内核 路由fib表之删除
2.2.4 路由删除 应用层通过SIOCDELRT删除路由项,一般调用ip_rt_ioctl或者inet_rtm_delroute。 这里我们通过inet_rtm_delroute来学习。 static int inet_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) {
2016-08-18 23:55:40
1190
原创 linux内核 路由fib表之输出查找
2.2.3.2 输出路由查找 ip_route_output_key 功能: 调用ip_route_output_flow ip_route_output_flow 功能: 1)路由发包查找 2)ipsec处理流程 int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp,st
2016-08-18 23:14:27
2759
原创 剑指offer之替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解决思路:刚开始没思路时,可以由简入繁 1、先来简单的,有了大体的思路 #include #include void replace(char *a){ char b[100]; int i=0,j=0; while(a
2016-04-06 22:41:45
488
原创 Socket通信之Write实现流程
1 分析write在进程间通信的实现过程 在内核中,socket是与文件指针挂钩的,因此就可以通过open、read、write像操作文件一样对socket进行操作;而write的过程相当于socket数据发送的过程。接下来,我们研究socket的数据发送流程。 1、从socket (AF_UNIX, SOCK_STREAM, 0)入手,经过跟踪会调到unix_create函数
2016-03-27 23:42:59
7777
1
原创 路由Zebra 之socket通信机制
1 socket通信过程 1.1 socket接收端流程 图1 socket server端函数关系 图2 socket server端通信流程图 Socketserver端的数据处理是由main函数的vty_server_sock()函数实现的, (1)先建立一个AF_UNIX类型的套接字socket1,然后绑定套接字,监听该套接字。 (2)zebra通过threa
2016-03-27 23:39:59
1786
原创 DHCP中继各种组网环境配置
DHCP中继的不同组网情况 两台网关设备,其中一台做server,一台做relay,PC作为client 一、正常情况 1.1 配置框架图 1.2详细配置 Server端 (1)LAN口 VLAN1 ip 192.168.5.1 地址池 192.168.1.200-250 (2)需要添加一条到192.168.1.0的路由
2016-03-27 22:54:16
2210
原创 网络协议之DHCP request续约实现机制
DHCP客户端在 一、DHCP客户端状态 1、客户端发送discover报文,进入INIT_SELECTING状态 2、客户端收到offer报文, 进入REQUESTING状态, 发送request报文 3、客户端收到ack报文, 进入BOUND状态 4、等待租约时间的一半, 进入RENEWING状态,并发送request报文 5、等待租约时间的7/8,
2016-03-27 22:37:51
13192
1
原创 GO语言网络编程之TCP (v2)
紧接着前面的章节,此篇,在tcp client端引入了锁、interfce、类的思想进去。 废话没有 tcp server端(跟上一篇一样) package main import ( "fmt" "net" "strings" // "time" ) var exit_all = make(chan string) func recv_msg(conn net.Conn, q
2016-03-20 02:31:05
1048
原创 GO语言网络编程之TCP (v1)
最近,将go语言的基础学习了一遍,感觉还得多练练才能拿得动这门语言; 在TCP通信编程基础上,将一些杂七杂八的东西(channel/defer/range/routinue/select/switch)都添进去tcp server端,tcp client端还保留比较原始的部分; 在下一篇中,计划将面向对象思想加到tcp client端。 TCP
2016-03-20 01:37:00
610
原创 go语言判断大小端
package main import ( "fmt" "unsafe" //go语言的sizeof ) func main() { s := int16(0x1234) b := int8(s) fmt.Println("int16字节大小为", unsafe.Sizeof(s)) //结果为2 if 0x34 == b { fmt.Println("little endia
2016-03-17 23:47:31
2667
原创 若遇到TFTP、FTP服务器端口冲突
检查DHCP服务器是否开启了相应的功能, 若开启,则将DHCP服务器关闭即可; 若还要使用DHCP服务器,则可以先停止DHCP; 然后先开TFTP、FTP服务器,然后再开DHCP服务器即可。+
2016-03-05 23:45:07
1798
原创 正则表达式之(?=pattern)(!=pattern)
(1)(?=pattern) 原意:执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配“Windows 2000”中的“Windows”,但不匹配“Windows 3.1”中的“Windows”。预测先行不占用字符,即发生匹配后,下一匹配
2016-03-05 23:36:14
1289
原创 工作半年,总结分享
自去年7月份以来,从一个新手慢慢走来,体会到其中的一些滋味; 也非常感谢同事们以及度娘对我的无私帮助; 特别感谢那些无名牛人博客、论坛分享,给了我很多的指引; 半年来,也做了一些笔记,比较零碎,一般用到哪学哪,感觉会比较乱; 从中选取一些共性的问题,希望能够帮助到初入职场的你!
2016-03-05 23:32:06
375
原创 C结构体中赋值使用的冒号和点号
根据论坛中,别人的回答,总结试验的成果 1、其中位域列表的形式为: 类型说明符 位域名:位域长度 struct bs { int a:8; int b:2; int c:6; }data; 说明data为bs变量,共占两个字节。其中位域a占8位,位域b占2位,位域c占6位。 2、初始化结构的时候现在可以这样写: (1)struct { int a[3],
2016-03-05 23:17:07
2624
原创 函数指针
int (*ff(int))(int *, int); 它们也返回指针,但是这个指针不是指向int、char之类的基本类型,而是指向函数。 理解: 我们用上面介绍的方法分析一下,ff首先与后面的“()”结合,即: int (*(ff(int)))(int *, int); // 用括号将ff(int)再括起来 也就意味着,ff是一个函数。 接着与前面的“*”结
2016-03-05 23:15:21
367
原创 typedef之函数
(1) typedef int INT32; //声明INT32为指向int的类型 (2) int size; //size为变量 ******************************************************* typedef int size; //声明size为指向int的类型 size a; (3) char *ptr_to_
2016-03-05 23:10:36
384
原创 core_initcall如何调用
一、core_initcall如何调用 1、 在2.6内核中,initcall.init区段又分成7个子区段,分别是 .initcall1.init .initcall2.init .initcall3.init .initcall4.init .initcall5.init .initcall6.init .initcall7.init 当需要把函数fn放到.initcall
2016-03-05 22:57:16
2308
1
原创 TCP/IP网络协议之DHCP简介
DHCP(Dynamic Host Configuration Protocol) 1.1 协议类型 DHCP协议是基于UDP层封装的应用层协议。 客户端使用端口号68 服务器/中继器使用端口号67 图1 DHCP报文封装格式 1.2 DHCP报文内容 (如何获取IP) 终端无IP,如何发出IP报文? Server如何给client回送报文? 因此,需要DHCP报文
2016-03-05 22:43:54
8911
原创 资料整理工具推荐mybase,本人使用
以前很久就接触mybase工具了,但当时也没太在意; 去年七月份毕业后,当工作时用到一些自己以前用过的东西,但是发现自己竟然都忘记了,也想不起来。这个时候感觉要有做笔记的必要了。 然后尝试了一些工具: word虽然笔记做起来顺手,但是需要的分的文件太多,不够直观,用过一段时间就放弃了; 在线笔记软件,写单篇文档的话还不错,对于分类目录的阅读来说,感觉还不是那么直观; 然后就想起以前接触过
2016-02-19 21:23:27
12720
原创 二叉排序树 插入 遍历 查找 (V0.2)
#include #include typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //插入 void insert(BiTree *t, int key) { if(*t == NULL) { (*t) = (BiTree
2016-02-19 15:49:12
491
原创 简单的二叉树创建、遍历(V1.0)
二叉树如图 输入:AB#D##CE### 前序遍历结果:ABDCE 中序遍历结果:BDAEC 后序遍历结果:DBECA 下面根据,创建函数的不同,分为三种类型 #include #include /********************创建方法1:main中创建树指针,create_tree传入指针***************************/
2016-02-19 14:01:43
381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅