Linux
文章平均质量分 81
weijinqian0
邮件:1184188277@qq.com
展开
-
Linux下编译会遇到的问题处理方法
You can search the correct package with this command:apt-file search /netlink/genl/genl.hIn my case the output is:libnl-3-dev: /usr/include/libnl3/netlink/genl/genl.hThis means, I have to转载 2016-11-16 10:18:14 · 1206 阅读 · 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 · 456 阅读 · 0 评论 -
教你修改以及重构skb
测试环境: CentOS5.3 2.6.18工具: sendip和wireshark sendip可以发送各种数据包,确实方便.wireshark图形化的显示对于分析整个数据包还是相当不错的...一:内核态基于Netfilter构造数据包主要有两种方式:1. alloc_skb申请一个skb结构体,然后根据实际的应用填充不同的成员,或者基转载 2016-06-05 15:36:51 · 4859 阅读 · 1 评论 -
(十六)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(下)
文章来源:http://blog.chinaunix.net/uid-23069658-id-3245853.html写文章的这个真大神,完美解决了我的所有问题。从用户空间来操作内核中Netfilter框架里自定义的HOOK函数 本文承上一篇博客。主要是和大家探讨一下如何从用户空间操作我已经注册到Netfilter中的自定义hook函数。有些童鞋可能就纳闷,难道ipta转载 2016-05-23 17:04:48 · 329 阅读 · 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 · 1559 阅读 · 0 评论 -
如何看待操作系统的用户空间和内核空间?
作为中央核心处理单元的CPU,除了生产工艺的不断革新进步外,在处理数据和响应速度方面也需要有权衡。稍有微机原理基础的人都知道Intel X86体系的CPU提供了四种特权模式ring0~ring3,其中ring0特权最高,ring3的特权最低,之所以要做这样的区分一个主要目的是保护资源,通俗来讲要保护的资源无非就是“内存、I/O端口以及执行特殊机器指令的能力”。任何一个时刻,x86 CPU都是在一定转载 2016-05-23 16:00:11 · 367 阅读 · 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 · 321 阅读 · 0 评论 -
(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
转自http://blog.chinaunix.net/uid-23069658-id-3160506.html本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。 能在CU上混的人绝非等闲之辈。因此,小弟这里说明一下:转载 2016-05-23 14:55:18 · 279 阅读 · 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 · 417 阅读 · 0 评论 -
Linux内核模块编译
Linux内核模块是一种可被动态加载和卸载的可执行程序。通过内核模块可以扩展内核功能,内核模块通常用于设备驱动、文件系统等。如果没有内核模块,需要向内核添加功能就需要自发代码、重新编译内核、安装新内核等步骤。内核空间中不止一个程序试图访问驱动程序模块,导致一个内核块在没有被调用完毕之前又被其他程序调用,这称之炒代码的重入。因此在设计驱动模块的数据结构时要考虑数据结构在多线程环境下不被其他线程破转载 2016-06-26 16:30:15 · 431 阅读 · 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 · 691 阅读 · 0 评论 -
Linux系统下配置双网卡路由表的配置
如果eth0为192.168.10.123/255.255.255.0,eth1为192.168.20.231/255.255.255.0,则命令格式如下:#route add -net 192.168.10.0 netmask 255.255.255.0 dev eth0#route add -net 192.168.20.0 netmask 255.255.255.0 dev转载 2016-11-10 12:47:42 · 1995 阅读 · 0 评论 -
Ubuntu 安装mysql和简单操作
http://www.cnblogs.com/zhuyp1015/p/3561470.html ubuntu上安装MySQL非常简单只需要几条命令就可以完成。 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client 3. sudo apt-get in转载 2016-10-29 16:51:08 · 257 阅读 · 0 评论 -
Linux root与普通user的转换
Ubuntu是最近很流行的一款Linux系统,因为Ubuntu默认是不启动root用户,现在介绍如何进入root的方法。(1)从user用户切换到root用户不管是用图形模式登录Ubuntu,还是命令行模式登录,我们会发现缺省的用户是user但是当我们需要执行一些具有root权限的操作(如修还系统文件)时,经常需要用sudo授权,感觉很麻烦此时我们可以切换到root转载 2016-10-28 10:52:58 · 807 阅读 · 0 评论 -
Ubuntu14.04系统hostapd编译及使用
本文主要介绍在Ubuntu14.04系统环境中编译hostapd,以及其使用。我的需求是在linux上创建WIFI热点,最早接触的是ap-hostapd这个脚本,然后参考网络文章安装hostapd以及dnsmasq。对于ap-hostpad的使用,网络已经有大量文章,笔者也就不再写了。不过由于hostapd版本关系,有些功能可能不支持,或者某些功能没有被编译。于是就得自己手动编译hosta转载 2016-09-27 14:43:07 · 2094 阅读 · 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 · 3054 阅读 · 0 评论 -
用hostapd配置wifi,isc-dhcp-server
hostapd的配置如下:(1)首先sudo apt-get install hostapd(2)然后在etc/hostapd路径下添加hostapd.conf文件(3)内容如下:interface=wlan0 driver=nl80211ssid=YOUR_SSIDchannel=9hw_mode=gignore_broadcast_ssid=0auth原创 2016-07-02 19:21:08 · 4701 阅读 · 0 评论 -
raw socket使用
转载地址:http://blog.163.com/tianle_han/blog/static/661782620094214229813/一、raw socket介绍 1、raw socket中文叫原始套接字,它和其他的套接字的不同之处在于它工作在网络层或数据链路层,而其他类型的套接字工作在传输层,只能进行传输层数据操作。 我们常使用rawsocket进行转载 2016-06-30 10:45:50 · 1558 阅读 · 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 · 1571 阅读 · 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 · 374 阅读 · 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 上】
引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并将其应用到高级路由子系统的基础框架里。自那时起,Netlink就成了Linux内核子系统和用户态的转载 2016-05-25 15:56:28 · 299 阅读 · 0 评论 -
Socket编程中,阻塞与非阻塞的区别
阻塞:一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.如果在队列中没有请示将会出现什么情况呢?那个方法将会等待一个的到来.这个行为叫阻塞.accept()方法将会阻塞服务器线程直到一个呼叫到来.当5个连接处理完闭之后,服务器退出.任何的在队列中的呼叫将会被取消. 非阻塞:非阻塞套接字是指执行此套接字的网络调用时转载 2016-05-25 15:40:07 · 501 阅读 · 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 · 1577 阅读 · 0 评论 -
Linux内核态与用户态通信的常用方法
前言最近做的事情很多地方用到Linux驱动层与应用层的通信,在此总结下常见的并且在我工作中用到的通信方法。总结由于每种方法都可以找到大量的示例代码,同时还有详细的函数手册,我就不贴代码了。只列下相关的方法和一个链接。procfsnetlinksyscallIOCTLsyscall的范围就广了,通过注册字符设备可以使用mmap和ioctl等转载 2016-05-24 20:48:34 · 1730 阅读 · 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 · 3042 阅读 · 0 评论 -
dev_queue_xmi函数详解
不得不说,ChinaUnix里面的大神太多了。。。。。还没细看先记录下 前面在分析IPv6的数据流程时,当所有的信息都准备好了之后,例如,出口设备,下一跳的地址,以及链路层地址。就会调用dev.c文件中的dev_queue_xmin函数,该函数是设备驱动程序执行传输的接口。也就是所有的数据包在填充完成后,最终发送数据时,都会调用该函数。 Dev_queue_xmit函数转载 2016-05-24 20:26:48 · 3715 阅读 · 0 评论 -
Linux Netfilter实现机制和扩展技术
Linux Netfilter实现机制和扩展技术 杨沙洲 (pubb@163.net)国防科技大学计算机学院 简介: 本文从Linux网络协议栈中报文的流动过程分析开始,对Linux 2.4.x内核中最流行的防火墙构建平台Netfilter进行了深入分析,着重介绍了如何在Netfilter-iptables机制中进行应用扩展,并在文末给出了一个利用扩展Net转载 2016-05-24 16:41:30 · 2740 阅读 · 0 评论 -
Linux进程间通信——管道
进程是一个独立的资源分配单位,不同进程之间的资源是相互独立的,没有关联,不能在一个进程中直接访问另一个进程中的资源。但是,进程不是孤立的,不同的进程之间需要信息的交换以及状态的传递,因此需要进程间数据传递、同步与异步的机制。 此篇博文记录管道。管道pipe 管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进转载 2016-05-11 10:13:33 · 229 阅读 · 0 评论 -
用户空间和内核空间通讯之【Netlink 中】
今天我们来动手演练一下Netlink的用法,看看它到底是如何实现用户-内核空间的数据通信的。我们依旧是在2.6.21的内核环境下进行开发。 在文件里包含了Netlink协议簇已经定义好的一些预定义协议:点击(此处)折叠或打开#define NETLINK_ROUTE 0 /* Routing/device hook转载 2016-05-25 16:20:10 · 237 阅读 · 0 评论 -
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 · 1909 阅读 · 0 评论 -
netlink的使用
两年前看到这篇入门文章,这几天看书遇到netlink socket,就又读了一遍,顺便翻译了一篇放上来,对原文中例子代码的一些小问题进行了修改,如果译文有不清楚或者错误的地方,敬请指出!!顺带附上了原文地址,大家可以参考E文。另外,word文档打印成PDF也作为附件提供下载,方便大家离线阅读。===============================做了个简单的应用,整理成转载 2016-06-04 14:15:45 · 393 阅读 · 0 评论 -
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 评论 -
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 · 479 阅读 · 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 · 2977 阅读 · 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 · 662 阅读 · 1 评论