rip_input
Arun Anirudhan
arun.anirudhan at gmail.com
Thu Oct 22 17:42:49 UTC 2009
Hello
I have just started programming in Kernel Level in FreeBSD.
I'm trying to hook rip_input and extract the fields in IP header. I just
tried to print the ip_len.
This is the code, but its not getting printed.
Please help me...
---------------------------------
#include <sys/param.h>
#include <sys/proc.h>
#include <sys/module.h>
#include <sys/kernel.h>
#include <sys/systm.h>
#include <sys/mbuf.h>
#include <sys/protosw.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <netinet/ip_var.h>
extern struct protosw inetsw[];
pr_input_t rip_input_hook;
void rip_input_hook(struct mbuf *m, int off)
{
struct ip *icp;
int hlen=off;
int l;
//m->m_len-=hlen;
//m->m_data+=hlen;
icp=mtod(m, struct ip *);
l=icp->ip_len;
//m->m_len+=hlen;
//m->m_data-=hlen;
uprintf("%d.\n",l);
}
static int
load(struct module *module, int cmd, void *arg)
{
int error = 0;
switch (cmd) {
case MOD_LOAD:
inetsw[ip_protox[IPPROTO_RAW]].pr_input = rip_input_hook;
break;
case MOD_UNLOAD:
inetsw[ip_protox[IPPROTO_RAW]].pr_input = rip_input;
break;
default:
error = EOPNOTSUPP;
break;
}
return (error);
}
static moduledata_t rip_input_hook_mod = {
"rip_input_hook", load, NULL};
DECLARE_MODULE(rip_input_hook,rip_input_hook_mod,SI_SUB_DRIVERS,SI_ORDER_MIDDLE);
--
With regards
Arun Anirudhan
MTech Student, NIT Calicut
9495983679
More information about the freebsd-net
mailing list