Date: Thu, 22 Oct 2009 10:53:07 -0700 From: Julian Elischer <julian@elischer.org> To: Arun Anirudhan <arun.anirudhan@gmail.com> Cc: freebsd-net@freebsd.org Subject: Re: rip_input Message-ID: <4AE09C03.6050201@elischer.org> In-Reply-To: <c668d9dd0910221019n3156db19j8b597d2d4ae728ec@mail.gmail.com> References: <c668d9dd0910221019n3156db19j8b597d2d4ae728ec@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Arun Anirudhan wrote: > 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. what IS 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); > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4AE09C03.6050201>