- 博客(33)
- 收藏
- 关注
原创 又一个半年
首先吐槽博客的编辑功能,实现不敢恭维,写个博客,格式编辑半天还不对。不管怎样,总算把路由的一些学习分析传上来了,word复制过来各种问题;路由的学习路上,感谢各种博客大神的分享,也将自己的所学分享出来,希望能够帮助刚接触的同学。在公司虽然接触的比较杂,但也学到了一些好玩的linux模块;后面也不定时的分享些笔记,有时间将整理的一些桥、IP分片重组的传上来。
2016-08-19 00:57:52 367
原创 linux内核 策略路由之删除
4.5 策略规则的删除 策略规则一般是通过应用层手动添加的,没有垃圾回收机制,只能通过手动删除操作。功能: (1)根据应用层传递的协议类型,获取相对应的fib_rule_ops (2)对应用层传参进行解析; (3)遍历rule_list链表,删除匹配的fib_rulestatic int fib_nl_delrul
2016-08-19 00:38:37 1676
原创 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 1508
原创 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 2592
原创 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 1558
原创 linux内核 策略路由之基本结构
四、LINUX策略规则4.1 基本结构体4.1.1策略规则结构体fib_rulestruct fib_rule{ struct list_head list;//策 略 规 则 链 表 atomic_t refcnt;//引 用 计 数 int ifindex;//接 口 index char ifna
2016-08-19 00:18:11 1293
原创 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 1723
原创 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 977
原创 linux内核 路由fib表之输出查找
2.2.3.2 输出路由查找ip_route_output_key功能:调用ip_route_output_flowip_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 2510
原创 剑指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 419
原创 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 7507 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 1450
原创 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 1711
原创 网络协议之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 12796 1
原创 GO语言网络编程之TCP (v2)
紧接着前面的章节,此篇,在tcp client端引入了锁、interfce、类的思想进去。废话没有tcp server端(跟上一篇一样) package mainimport ( "fmt" "net" "strings" // "time")var exit_all = make(chan string)func recv_msg(conn net.Conn, q
2016-03-20 02:31:05 933
原创 GO语言网络编程之TCP (v1)
最近,将go语言的基础学习了一遍,感觉还得多练练才能拿得动这门语言; 在TCP通信编程基础上,将一些杂七杂八的东西(channel/defer/range/routinue/select/switch)都添进去tcp server端,tcp client端还保留比较原始的部分; 在下一篇中,计划将面向对象思想加到tcp client端。 TCP
2016-03-20 01:37:00 541
原创 go语言判断大小端
package mainimport ( "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 2564
原创 若遇到TFTP、FTP服务器端口冲突
检查DHCP服务器是否开启了相应的功能,若开启,则将DHCP服务器关闭即可;若还要使用DHCP服务器,则可以先停止DHCP; 然后先开TFTP、FTP服务器,然后再开DHCP服务器即可。+
2016-03-05 23:45:07 1617
原创 正则表达式之(?=pattern)(!=pattern)
(1)(?=pattern)原意:执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配“Windows 2000”中的“Windows”,但不匹配“Windows 3.1”中的“Windows”。预测先行不占用字符,即发生匹配后,下一匹配
2016-03-05 23:36:14 1111
原创 工作半年,总结分享
自去年7月份以来,从一个新手慢慢走来,体会到其中的一些滋味;也非常感谢同事们以及度娘对我的无私帮助;特别感谢那些无名牛人博客、论坛分享,给了我很多的指引;半年来,也做了一些笔记,比较零碎,一般用到哪学哪,感觉会比较乱;从中选取一些共性的问题,希望能够帮助到初入职场的你!
2016-03-05 23:32:06 302
原创 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 2404
原创 函数指针
int (*ff(int))(int *, int);它们也返回指针,但是这个指针不是指向int、char之类的基本类型,而是指向函数。理解:我们用上面介绍的方法分析一下,ff首先与后面的“()”结合,即:int (*(ff(int)))(int *, int); // 用括号将ff(int)再括起来也就意味着,ff是一个函数。接着与前面的“*”结
2016-03-05 23:15:21 290
原创 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 304
原创 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 2009 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 8622
原创 资料整理工具推荐mybase,本人使用
以前很久就接触mybase工具了,但当时也没太在意;去年七月份毕业后,当工作时用到一些自己以前用过的东西,但是发现自己竟然都忘记了,也想不起来。这个时候感觉要有做笔记的必要了。然后尝试了一些工具:word虽然笔记做起来顺手,但是需要的分的文件太多,不够直观,用过一段时间就放弃了;在线笔记软件,写单篇文档的话还不错,对于分类目录的阅读来说,感觉还不是那么直观;然后就想起以前接触过
2016-02-19 21:23:27 12420
原创 二叉排序树 插入 遍历 查找 (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 423
原创 简单的二叉树创建、遍历(V1.0)
二叉树如图输入:AB#D##CE###前序遍历结果:ABDCE中序遍历结果:BDAEC后序遍历结果:DBECA下面根据,创建函数的不同,分为三种类型#include #include /********************创建方法1:main中创建树指针,create_tree传入指针***************************/
2016-02-19 14:01:43 293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人