kernel的值→ user space: C program - Linux

Robert avatar
By Robert
at 2015-07-07T23:08

Table of Contents

我在 net/core/dev.c

int(myPacket)(struct sk_buff)=0;

int netif_rx(struct sk_buff *skb)
{


if(myPacket)
{
myPacket(skb);
}


...
}

extern int(myPacket)(strcut sk_buff)=0;
EXPORT_SYMBOL(myPacket);


接著寫了一個 kernel module

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#lnclude <linux/ip.h>
extern int(*myPacket)(strcut sk_buff*)=0;

int myPacketAnalyze(struct sk_buff* skb)
{
struct iphdr *iph;
iph = ip_hdr(skb);
printk("version = %d\n",iph->version);
printk("header_len = %d\n",iph->ihl);
printk("tos = %d\n",iph->tos);
printk("total_len = %hu\n",ntohs(iph->tot_len));
printk("id = %hu\n",ntohs(iph->id));
printk("frag = %hu\n",(nthos(iph->frag_off))>>13);
printk("frag_off = %hu\n",(ntohs(iph->frag_off))&0x1111111111111);
printk("protocol = %d\n",iph->protocol);
printk("ttl = %d\n",iph->ttl);
printk("souce_addr = %u.%u.%u.%u\n",NIPQUAD(iph->saddr));
printk("dest_addr = %u.%u.%u.%u\n",NIPQUAD(iph->daddr));
}

int init_module(void)
{
myPacket = myPacketAnalyze;
return 0;
}
void cleanup_module(void)
{
myPacket = 0;
}


在 var/log/message

印出來的值是對的 有跑出我想要的結果


但是這個值抓到我的C程式裡面

outputpkt.c

不曉得要怎麼做
我找網路上 有人說要用system call

有人有經驗嗎?謝謝~

--
Tags: Linux

All Comments

Lily avatar
By Lily
at 2015-07-11T14:20
libpcap 好東西不用嗎?

Ubuntu 14.04更新出錯

Odelette avatar
By Odelette
at 2015-07-07T14:53
※ 引述《blackeagle (愛上天使)》之銘言: : 不好意思請問一下, : 今天利用sudo apt-get update做Ubuntu 14.04更新的時候 : 出現了以下的error message: : E: Encountered a section with no Package: head ...

tar指令應用之問題

Hardy avatar
By Hardy
at 2015-07-07T14:47
小弟現在遇到一個問題, 假設有一個foler名為testFolder裏頭有數十個檔案, 如果我下了tar zcvf testFoler.tar.gz testFolder 則壓縮過後的檔案結構會變成testFolder/files 而我想要得到的是tar.gz檔是/files 也就壓縮過後檔案都移至 ...

Linux 工程師10項不可不知的技能

Franklin avatar
By Franklin
at 2015-07-07T03:07
(在某個社團看到的linuxpilot網站分享文章,就原封不動的貼過來分享一下。) 現在找工作不容易,有人會問要成為一個負責 Linux 系統工程師,需要掌握哪方面的技 術?這次就來介紹一下。 Linux如果是學習可以選用 Red Hat或CentOS,特別是 CentOS 在企業中用得最多,當然 還會有 ...

tr替換文字會亂替換

Emma avatar
By Emma
at 2015-07-07T00:54
※ 引述《a07051226 (葡萄糖)》之銘言: : 最近練習寫sh腳本 : 我是先ls出檔案列表,再一一帶入指令中 : 不過因為要輸出檔案,所以也修改成輸出列表 : 例如: : Input :out01.mp4 : Output:out01.gif : 我是用cat Input | tr .mp4 .gi ...

tr替換文字會亂替換

Daniel avatar
By Daniel
at 2015-07-07T00:17
最近練習寫sh腳本 我是先ls出檔案列表,再一一帶入指令中 不過因為要輸出檔案,所以也修改成輸出列表 例如: Input :out01.mp4 Output:out01.gif 我是用cat Input | tr .mp4 .gif andgt; Output 不過實際上輸出會變成out0f.gif 04的 ...