dev c 修改資料

2021-05-01 20:58:12 字數 2419 閱讀 8471

今天看完《linux kernel moduletcp/ip 程式設計》中實現ping命令是顯示hello module 的資料報程式後,也完成了試驗現在總結如下:

步驟一、在/net/core/dev.c中增加後門

int (*eefunction01)(struct sk_buff *)=0;//這是函式eefunction01的函式指標宣告

在函式int dev_queue_xmit(struct sk_buff *){}中新增

if(eefunction01)//著表示有乙個函式指標eefunction01,其傳遞的引數為(struct sk_buff *),當程式執行到dev_queue_xmit()函式的一開始時,由指令if(eefunction01)判斷指標是否存在。如果存在則會執行eefunction01(skb)函式。

當然還要在檔案/net/netsyms.c檔案下進行必要的修改

新增 extern int(*eefunction01)(struct sk_buff *)

export_symbol_novers(eefunction01);

步驟二、編寫function01函式之前

在寫之前有些編寫模組函式的,必不可少的開頭

//--------例行公事-------------

#ifndef __kernel__

#define __kernel__

#endif

#ifndef module

#define module

#endif

#ifdef config_smp

#define __smp__

#endif

//--------例行公事結束----------

三、開始編寫eefunction01函式

#include

#incldue

#include

#include

module_license("gpl");

extern int (*eefunction01)(struct sk_buff *);

static int eefunction01()

static init_module(void)

static int cleanup_module(void)

使用的編譯命令   gcc -c -i/usr/src/(linux核心檔案)/include  eefunction.c 就會生成eefunction01.o檔案然後就載入模組用ping命令就可以實現了。

注:以上試驗是在linux核心2.4.32下完成的。

rt...想學寫網路核心模組...我的機器有兩張網絡卡eth0、eth1,只想收到然後**出去。

首先,我修改/net/core/dev.c加入:(抄原實現的~~呵呵)

void(*mybr_handle_frame_hook)(struct   sk_buff   *skb)=null;

static   __inline__   int   handle_mybr(struct   sk_buff   *skb,

struct   packet_type   *pt_prev)

} mybr_handle_frame_hook(skb);

return   ret; }

在netif_receive_skb函式中加入

....

#ifdef   config_net_divert

if   (skb-> dev-> divert   &&   skb-> dev-> divert-> divert)

ret   =   handle_diverter(skb);

#endif   /*   config_net_divert   */

#if   defined(config_bridge)   ||   defined(config_bridge_module)

if   (skb-> dev-> br_port   !=   null   &&

br_handle_frame_hook   !=   null)  

#endif

我加的:

if(mybr_handle_frame_hook!=null)

return   handle_mybr(skb,pt_prev);

///

for   (ptype=ptype_base[ntohs(type)&15];ptype;ptype=ptype-> next)  

if(!strcmp(skb-> dev-> name, "eth1 "))

} int     init_module()

void   cleanup_module()

module_license( "gpl ");

但是我一載入就crash了,555,請高人指點

游標修改資料

declare updateemtinca rcursor cursor scroll 宣告乙個游標 for select emtincar.id as emtincar id,case when b.yieldtransitstatetype id is null then 3 else b.yi...

elasticSearch修改資料

elasticsearch幾乎能實時提供資料操作和搜尋功能。預設情況下,從開始索引 更新 刪除資料到出現搜尋結果的時間可以認為需要一秒的時間。這是與sql等其他平台的重要區別,其中資料在事務完成後可以立即使用。在上節中我們給索引建立了乙個文件,命令為 put customer doc 1 prett...

mongodb修改資料

修改資料 db.collectionname.update query,update,upsert,multi 功能 修改乙個文件 引數 query 篩選要修改的文件 相當於where子句,用法同查詢 update 將資料更新為什麼內容相當於set操作,需要使用修改器操作符 upsert bool值...