X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=transforward.c;h=cd1b512320f99bee2e5c27dde15f24798d5de019;hb=7832dfcb40682e969a9fcade776a1c03a7c9000c;hp=da61ceebb98062dfaf3af6a97339b06ecbdf24db;hpb=71b2cf441369c34aff3033d39e1c79e27bc39eb4;p=transforward.git diff --git a/transforward.c b/transforward.c index da61cee..cd1b512 100644 --- a/transforward.c +++ b/transforward.c @@ -41,13 +41,12 @@ MODULE_LICENSE("GPL"); MODULE_VERSION(VERSION_STR); static int address_in_root(unsigned int haddr) { - printk(KERN_CRIT "In address_in_root: %d",haddr); struct net_device *dev; struct net *net = &init_net; for_each_netdev(net, dev) { unsigned int ifhaddr = inet_select_addr(dev,0,0); - printk(KERN_CRIT "Checking address: %d",ifhaddr); + //printk(KERN_CRIT "Checking address: %u",ifhaddr); if (haddr == ifhaddr) return 1; } return 0; @@ -55,16 +54,24 @@ static int address_in_root(unsigned int haddr) { static int inet_bind_entry(struct socket *sock, struct sockaddr *uaddr, int addr_len) { struct sockaddr_in *addr = (struct sockaddr_in *)uaddr; - unsigned int snum = ntohs(addr->sin_addr.s_addr); + unsigned int snum = addr->sin_addr.s_addr; + //printk(KERN_CRIT "Checking address %d",snum); if (address_in_root(snum)) { put_net(sock_net(sock->sk)); sock_net_set(sock->sk, get_net(&init_net)); - printk(KERN_CRIT "Rewiring netns"); + //printk(KERN_CRIT "Rewiring netns"); } jprobe_return(); return 0; } +static struct file *do_last_probe(struct nameidata *nd, struct path *path, + const struct open_flags *op, const char *pathname) { + + + jprobe_return(); + +} static struct jprobe net_probe = { .entry = (kprobe_opcode_t *) inet_bind_entry @@ -92,11 +99,11 @@ static int __init transforward_init(void) } if ((ret = register_jprobe(&net_probe)) <0) { - printk("register_jprobe failed, returned %d\n", ret); + printk("register_jprobe failed, returned %u\n", ret); return -1; } - printk("Planted jprobe at %p, handler addr %p\n", - net_probe.kp.addr, net_probe.entry); + //printk("Planted jprobe at %p, handler addr %p\n", + //net_probe.kp.addr, net_probe.entry); return ret; }