sk_buff packet filter
Pavel Jelinek
pavel.jelinek na monetplus.cz
Pátek Září 13 08:40:14 CEST 2002
Dobry den,
nevite nahodou nekdo jak napsat packet filter device driver pro Linux, ktery
by pracoval pod kernelem 2.4 i 2.2 ?
Zkousim primo fitrovat packet v skb queue (struct sk_buff), kterou dostanu
pomoci dev_add_pack().
Packet muzu modifikovat (treba upravit data, prepocitat checksum a vyssi
vrstvy dostanou tuto modifikaci), ale nevim jak
v sk_buff packet uplne zrusit.
Zkousel jsem pouzit funkce skb_unlink, dev_kfree_skb, ale ty packet nezrusi,
protoze mam zrejme pouze lokalni kopii skb.
Potreboval bych napsat specialni secure tunnel nad IP a nechci k tomu pouzit
ethertap nebo tuntap devices.
Nevite nekdo jak na to ?
Tady je cast kodu, ktera umoznuje zachytit packet:
static struct packet_type my_type;
static int f_handler(struct sk_buff *skb, struct net_device *dv, struct
packet_type *pt)
{
switch(skb->pkt_type)
{
case PACKET_OUTGOING:
/* zde je nejaka uprava dat packetu v sk_buff */
break;
case PACKET_HOST:
.....
}
return 0;
}
int init_module(void)
{
my_type.type = htons(ETH_P_ALL);
my_type.func = f_handler;
dev_add_pack(&my_type);
return 0;
}
Diky
Pavel Jelinek
mailto: pavel.jelinek na monetplus.cz
Další informace o konferenci Linux