[LUGOS-PROG] select in kernel thread
Simon Mavsar
simon.mavsar at hermes.si
Mon Oct 10 13:39:28 CEST 2005
Zivjo,
Ni ravno select, ampak ce rabis asinhrono branje network interface-a si
lahko sam napisis svoj 'select'
Nekako takole (spodnji primer asinhrono bere 'pakete' na npr.: 'loopback
inteface-u') :
#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
static struct nf_hook_ops nfho;
// Ime inteface-a na katerem hoces brati...
static char *drop_if = "lo"; // 'loopback' v nasem primeru
// Prestrezna funkcija...
unsigned int hook_func(unsigned int hooknum,
struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *)) {
if (strcmp(in->name, drop_if) == 0) {
printk("Do something with packet on %s...\n", drop_if);
//
// TODO: Naredi zeljeno z paketom...
//
return NF_DROP; // ce vrnes NF_DROP vrednost ta paket sploh ne bo
// prisel iz netstack-a -> za 'user space' nevidljiv
} else {
return NF_ACCEPT; // poslji ga naprej po netstack-u do 'user spacea'
}
}
int init_module() {
nfho.hook = hook_func; // nastavimo na naso funkcijo
nfho.hooknum = NF_IP_PRE_ROUTING;
nfho.pf = PF_INET;
nfho.priority = NF_IP_PRI_FIRST; // ... na prvo mesto
nf_register_hook(&nfho); // registriramo naso funkcijo
return 0;
}
/* Cleanup routine */
void cleanup_module()
{
nf_unregister_hook(&nfho);
}
-----Original Message-----
From: lugos-prog-bounces+simon.mavsar=hermes.si at lugos.si
[mailto:lugos-prog-bounces+simon.mavsar=hermes.si at lugos.si] On Behalf Of
Ciglic Andrej ITWEV6
Sent: 10. oktober 2005 12:03
To: lugos-prog at lugos.si
Subject: [LUGOS-PROG] select in kernel thread
Zdravo,
stric googli mi ne ponudi nič pametnega.
Imam thread v kernelu in več bindanih (socket->ops->bind(... ) socketov. Ali
mogoče kdo ve kako se izvede select v kernel threadu (driver module)? Kje
najdem kakšen primer?
V naprej Tnx.
Andrej
_______________________________________________
lugos-prog mailing list
lugos-prog at lugos.si
http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-prog
More information about the lugos-prog
mailing list