C
文章平均质量分 81
weijinqian0
邮件:1184188277@qq.com
展开
-
位域
位域有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字转载 2016-03-03 11:24:58 · 318 阅读 · 0 评论 -
linux 系统 ko模块编译
今天整理以前笔记,发现曾经里面有一个Makefile文件。 仔细一看是以前实习做linux内核程序设计时候写的模块makefile。刚好我电脑也有linux系统,就拿来回顾一下。写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko 再加载一下insmod my.ko dmesg|grep module 看到模块初始化时候的打印卸载模转载 2016-05-23 16:35:30 · 1557 阅读 · 0 评论 -
在hosted中添加代码用进程的方式获得终端的MAC地址
可以在accounting.c的文件中添加如下代码,实现管道void pipe1(u8 *addr){ //printf("weijinqian11111\n"); const char* pathname = "/home/weijinqian/hostapd-2.5/m_fifo"; int pipe_fd = -1; int i=0;原创 2016-05-23 15:00:19 · 320 阅读 · 0 评论 -
(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
转自http://blog.chinaunix.net/uid-23069658-id-3160506.html本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。 能在CU上混的人绝非等闲之辈。因此,小弟这里说明一下:转载 2016-05-23 14:55:18 · 278 阅读 · 0 评论 -
Linux内核编程 <1> -- Hello Mod
1. hello mod#include #include #include static int __init hello_start(void){ printk("hello,this moudle start work!\n"); return 0; } static void __exit hello_exit(void){ print转载 2016-06-26 10:47:41 · 416 阅读 · 0 评论 -
(四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter
今天我们讨论一下防火墙的数据包过滤模块iptable_filter的设计原理及其实现方式。 内核中将filter模块被组织成了一个独立的模块,每个这样独立的模块中都有个类似的init()初始化函数。编写完该函数后,用module_init()宏调用初始化函数;同样当模块被卸载时调用module_exit()宏将该模块卸载掉,该宏主要调用模块的“析构”函数。这当中就牵扯到内核ko模块的一些转载 2016-05-22 21:22:08 · 396 阅读 · 0 评论 -
(三)洞悉linux下的Netfilter&iptables:内核中的rule,match和target
作为ipchains的后继者,iptables具有更加优越的特性,良好的可扩展功能、更高的安全性以及更加紧凑、工整、规范的代码风格。 在2.6的内核中默认维护了三张表(其实是四张,还有一个名为raw的表很少被用到,这里不对其进行分析介绍了):filter过滤表,nat地址转换表和mangle数据包修改表,每张表各司其职。我们对这三张表做一下简要说明: 1)、filt转载 2016-05-22 20:26:33 · 373 阅读 · 0 评论 -
netlink socket编程实例
关于Netlink IPC方式的介绍,请参见http://blog.chinaunix.net/space.php?uid=14753126&do=blog&id=2978566本文通过一个编程实例来更深入地了解netlink。功能描述:1. 本实例包含2个部分:内核模块和用户程序2.用户程序通过netlink socket建立与kernel module连接,并向kernel m转载 2016-06-04 16:40:32 · 3697 阅读 · 0 评论 -
netlink的使用
两年前看到这篇入门文章,这几天看书遇到netlink socket,就又读了一遍,顺便翻译了一篇放上来,对原文中例子代码的一些小问题进行了修改,如果译文有不清楚或者错误的地方,敬请指出!!顺带附上了原文地址,大家可以参考E文。另外,word文档打印成PDF也作为附件提供下载,方便大家离线阅读。===============================做了个简单的应用,整理成转载 2016-06-04 14:15:45 · 392 阅读 · 0 评论 -
(十五)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(上)
向Netfilter中注册自己的hook函数 数据包在协议栈中传递时会经过不同的HOOK点,而每个HOOK点上又被Netfilter预先注册了一系列hook回调函数,当每个清纯的数据包到达这些点后会被这些可恶hook函数轮番调戏一番。有时候我们就在想,只让系统自带的这些恶棍来快活,我自己能不能也make一个hook出来和它们同流合污呢?答案是肯定的。 我们来回顾一转载 2016-05-23 16:36:26 · 606 阅读 · 0 评论 -
(十六)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(下)
文章来源:http://blog.chinaunix.net/uid-23069658-id-3245853.html写文章的这个真大神,完美解决了我的所有问题。从用户空间来操作内核中Netfilter框架里自定义的HOOK函数 本文承上一篇博客。主要是和大家探讨一下如何从用户空间操作我已经注册到Netfilter中的自定义hook函数。有些童鞋可能就纳闷,难道ipta转载 2016-05-23 17:04:48 · 328 阅读 · 0 评论 -
linux原始套接字(1)-arp请求与接收
以太网的arp数据包结构:arp结构op操作参数:1为请求,2为应答。常用的数据结构如下:1.物理地址结构位于netpacket/packet.hstruct sockaddr_ll{ unsigned short int sll_family; unsigned short int sll_protocol; int sl转载 2016-07-08 15:54:00 · 3052 阅读 · 0 评论 -
mysql_use_result和mysql_store_result
同:两者均是连接外部程序处理参数,并返回结果集。异:从服务器上检索结果集的行,前者只是启动一个逐行的检索,后者从服务器检索结果集的时候就提取了行,并且为之分配内存,存储到客户机中。操作处理:mysql_store_result:获取全部数据集保存到本机,因此在随后的mysql_fetch_row()就再也不会返回错误,当返回NULL的时候表示已经到达数据集的末端。m转载 2016-06-15 17:11:46 · 748 阅读 · 0 评论 -
raw socket使用
转载地址:http://blog.163.com/tianle_han/blog/static/661782620094214229813/一、raw socket介绍 1、raw socket中文叫原始套接字,它和其他的套接字的不同之处在于它工作在网络层或数据链路层,而其他类型的套接字工作在传输层,只能进行传输层数据操作。 我们常使用rawsocket进行转载 2016-06-30 10:45:50 · 1555 阅读 · 1 评论 -
linux线程之间的通信
线程之间的通信:1、 互斥量用的api函数有:pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock、pthread_mutex_trylock示例://thread_mutex.cpp#include #include#include #include #include #includeu转载 2016-06-14 11:28:13 · 1569 阅读 · 0 评论 -
iovec结构体定义及使用
I/O向量(struct iovec)readv(2)与writev(2)函数都使用一个I/O向量的概念。这是由所包含的文件定义的:#include 头文件定义了struct iovc,其定义如下:struct iovec { ptr_t iov_base; /* Starting address */ size_t iov_len; /* Length i转载 2016-06-28 19:33:56 · 690 阅读 · 0 评论 -
Linux内核模块编译
Linux内核模块是一种可被动态加载和卸载的可执行程序。通过内核模块可以扩展内核功能,内核模块通常用于设备驱动、文件系统等。如果没有内核模块,需要向内核添加功能就需要自发代码、重新编译内核、安装新内核等步骤。内核空间中不止一个程序试图访问驱动程序模块,导致一个内核块在没有被调用完毕之前又被其他程序调用,这称之炒代码的重入。因此在设计驱动模块的数据结构时要考虑数据结构在多线程环境下不被其他线程破转载 2016-06-26 16:30:15 · 430 阅读 · 0 评论 -
关于NETLINK的变化在3.9版本以后
我用的版本号是 :3.13.0-24-generic在之前的版本中struct sock *netlink_kernel_create(struct net *net, int unit,unsigned int groups, void (*input)(struct sk_buff *s原创 2016-06-26 16:22:17 · 455 阅读 · 0 评论 -
教你修改以及重构skb
测试环境: CentOS5.3 2.6.18工具: sendip和wireshark sendip可以发送各种数据包,确实方便.wireshark图形化的显示对于分析整个数据包还是相当不错的...一:内核态基于Netfilter构造数据包主要有两种方式:1. alloc_skb申请一个skb结构体,然后根据实际的应用填充不同的成员,或者基转载 2016-06-05 15:36:51 · 4853 阅读 · 1 评论 -
C Language Examples of IPv4 and IPv6 Raw Sockets for Linux
C Language Examples of IPv4 and IPv6 Raw Sockets for LinuxI have recently been investigating raw socket programming in C for linux and I decided to provide a collection of routines I have prepared.转载 2016-06-25 16:12:35 · 729 阅读 · 0 评论 -
(二)洞悉linux下的Netfilter&iptables:内核中的ip_tables小觑
Netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块(ip_tables)正是通过把自己所编写的一些钩子函数注册到Netfilter所监控的五个关键点(NF_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_LOCAL_OUT,NF_IP_POST_ROUTING)这种方式介入到对数据包的处理。这些钩子函数功能转载 2016-05-21 20:47:04 · 271 阅读 · 0 评论 -
用户空间内核空间ipc总结(sockopt,ioctl,mmap,netlink,proc,seq,file,copy_user)
多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持!本文就总结下常见的ipc,getsockopt/setsockopt mmap netlink/socket proc/seq copy_from_user/copy_to_user 文件。采用先讲解后测试转载 2016-05-25 11:51:09 · 1574 阅读 · 0 评论 -
Linux内核态与用户态通信的常用方法
前言最近做的事情很多地方用到Linux驱动层与应用层的通信,在此总结下常见的并且在我工作中用到的通信方法。总结由于每种方法都可以找到大量的示例代码,同时还有详细的函数手册,我就不贴代码了。只列下相关的方法和一个链接。procfsnetlinksyscallIOCTLsyscall的范围就广了,通过注册字符设备可以使用mmap和ioctl等转载 2016-05-24 20:48:34 · 1728 阅读 · 0 评论 -
使用dev_queue_xmit发送定制报文
使用dev_queue_xmit发送定制报文 本文档的Copyleft归necofang所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn : necofang@hotmail.com来源: necofang.cublog.cn 本文通过实例讲述如何使用dev_queue_xmit来直接发送udp和tcp报文。示例代码在l转载 2016-05-24 20:33:20 · 3040 阅读 · 0 评论 -
Netfilter的使用和实现
本文主要内容:Netfilter的原理和实现浅析,以及示例模块。内核版本:2.6.37Author:zhangskd @ csdn blog 概述 Netfilter为多种网络协议(IPv4、IPv6、ARP等)各提供了一套钩子函数。在IPv4中定义了5个钩子函数,这些钩子函数在数据包流经协议栈的5个关键点被调用。这就像有5个钓鱼台,在每转载 2016-05-24 11:00:07 · 703 阅读 · 0 评论 -
Linux下C语言Mysql数据库使用范例
数据库:CREATE DATABASE test;CREATE TABLE `test` ( `id` int(11) NOT NULL auto_increment, PRIMARY KEY (`id`));ALTER TABLE `test` ADD COLUMN `name` varchar(20);代码: 1转载 2016-04-28 12:26:59 · 327 阅读 · 0 评论 -
树莓派网上教程汇总
用户手册 英文http://wenku.baidu.com/view/f0d3fa1c227916888486d715.html树莓派使用指南 http://my.safaribooksonline.com/book/programming/9781449344252/getting-started-with-raspberry-pi/index_html转载 2016-04-08 15:39:52 · 629 阅读 · 0 评论 -
树莓派开发系列教程——树莓派做wifi热点
原理:Pi使用有线连入网络,然后接USB无线网卡作为热点,提供Wifi接入。1、USB无线网卡驱动如果接上USB无线网卡,使用ifconfig命令,能直接看到wlan0,那么恭喜你,可以直接跳过这一步。如果没有请查询一下树莓派支持的USB无线网卡型号,可参考以下网址:http://elinux.org/RPi_VerifiedPeripherals#USB_转载 2016-04-12 11:08:48 · 1253 阅读 · 0 评论 -
一个程序员的Java和C++学习之路(整理)
http://blog.csdn.net/ajian005/article/details/8003655转载 2016-03-21 14:54:26 · 877 阅读 · 1 评论 -
Socket编程中,阻塞与非阻塞的区别
阻塞:一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.如果在队列中没有请示将会出现什么情况呢?那个方法将会等待一个的到来.这个行为叫阻塞.accept()方法将会阻塞服务器线程直到一个呼叫到来.当5个连接处理完闭之后,服务器退出.任何的在队列中的呼叫将会被取消. 非阻塞:非阻塞套接字是指执行此套接字的网络调用时转载 2016-05-25 15:40:07 · 500 阅读 · 0 评论 -
用户空间和内核空间通讯之【Netlink 上】
引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并将其应用到高级路由子系统的基础框架里。自那时起,Netlink就成了Linux内核子系统和用户态的转载 2016-05-25 15:56:28 · 299 阅读 · 0 评论 -
strcat(连接两字符串)
函数定义:char *strcat (char *dest,const char *src)函数说明:strcat()会将参数src字符串拷贝到参数dest所指的字符串尾,第一个参数dest要有足够的空间来容纳要拷贝的字符串;返回值: 返回dest字符串参数的起始地址;接下来分三种情况来看strcat()函数是可行:方案一:两个参数都是数组点击(此处)折叠转载 2016-05-16 19:05:43 · 2410 阅读 · 0 评论 -
sk_buff结构
24.8 接收过程的实现接收函数一般由中断控制程序调用,负责把网络设备接收到的数据以一定格式提交给内核中的网络层模块。在具体介绍接收函数前先简单介绍一下sk_buff结构。24.8.1 sk_buff结构sk_buff是Linux网络协议栈中一个重要数据结构,网络协议栈中的各层协议都可以通过对它的操作实现本层协议数据的添加或者数据提取,这种机制避免了协议数据单元在不同的转载 2016-05-27 15:00:54 · 513 阅读 · 0 评论 -
协议的类型
#defineIPPROTO_IP0/*dummyforIP*/#defineIPPROTO_ICMP1/*controlmessageprotocol*/#defineIPPROTO_IGMP2/*internetgroupmanagementprotocol*/#defineIPPROTO_GGP3/*gateway^2(deprecated)*/#define原创 2016-05-26 21:26:43 · 349 阅读 · 0 评论 -
linux 消息队列实例
前言: 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息函数:1.创建新消息队列或取得已存在消息队列原型:int msgget(key_t key, int msgflg);参数: ke转载 2016-05-13 19:57:14 · 478 阅读 · 0 评论 -
sk_buff属性详解
第一部分:skb - Linux network buffersskb——Linux网络缓存Harald Welte laforge@gnumonks.org1.3, 2000/10/14 21:27:02 ---------------------------------------------------------------------Short descripti转载 2016-05-26 20:09:24 · 2974 阅读 · 0 评论 -
iphdr
来自于百度百科iphdr,是一种计算机用语。是Linux下IP数据包的描述结构体。Linux下IP数据包的描述结构体所在头文件为/usr/src/linux/include/linux/ip.h,结构如下:struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD) //小端模式下__u8 ihl:4,/原创 2016-05-26 19:58:58 · 661 阅读 · 1 评论 -
skb相关的函数
函数名 功能 函数形成 参数 描述 skb_queue_empty 检查队列是否为空 int skb_queue_empty (struct sk_buff_head * list) list为队列头 如果队列为空返回真,否则返回假 skb_get 引用缓冲区 struct sk_buff * skb_get (struct sk_buff * skb)原创 2016-05-24 22:53:30 · 1904 阅读 · 0 评论 -
用户空间和内核空间通讯之【Netlink 中】
今天我们来动手演练一下Netlink的用法,看看它到底是如何实现用户-内核空间的数据通信的。我们依旧是在2.6.21的内核环境下进行开发。 在文件里包含了Netlink协议簇已经定义好的一些预定义协议:点击(此处)折叠或打开#define NETLINK_ROUTE 0 /* Routing/device hook转载 2016-05-25 16:20:10 · 237 阅读 · 0 评论 -
TCP与UDP在socket编程中的区别
一、TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证 部分满足以下几点要求时,应该采用UDP 面向数据报方式 网络数据大多为短消息 拥有大量Client 对数据安全性无特殊要求转载 2016-10-20 10:24:19 · 246 阅读 · 0 评论