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