Problem s pristupem k skb->mac.ethernet->h_source ?
Dalibor Toman
dtoman na fortech.cz
Čtvrtek Říjen 4 18:07:09 CEST 2001
DD,
Snazim se trosku vylepsit logovani paketu z IPchainu. Protoze
potrebuju znackovat
pakety pro jejich pozdejsi trideni do front v CBQ shaperu, chybelo mi
ze se neloguje
prave pridelena znacka k paketu. Modifikovat prislusnou cast zdrojaku
ipchainu
(ip_fw.c - dump_packet() ) se mi celkem povedlo a problemy jsem
nezaznamenal.
Pak jsem si rekl, ze by bylo krasny, kdyby se jeste logovala i
zdrojova MAC adresa
packetu (pri detekovani nekterych problematickych stavu je k nicemu,
ze se
zalogovala IP adresa zdroje - podle ni se neda nic najit a na tcpdump
uz muze byt
pozde). Uprava se mi temer povedla - nebyt toho, ze pri tom logovani
cas od casu
spadne kernel, jindy nejaka aplikace a jindy se chainy zacnou chovat
divne. Protoze
je MAC pristupna pres pointer je mozne, ze je pro ni alokovana
separatni pamet a
v nekterych pripadech pointr na ni neni platny (nulovost testuju) a
pak ctu nekde
buhvi odkud.
K logovani MACky pouzivam nasledujici kod - nejsem CCkar a urcite to
jde napsat
lip. Cely upraveny ip_fw.cz jsem vystavil na
ftp://ftp.lit.cz/linux/ip_fw.c (upravy se tykaji
parametru a obsahu dump_packet() a ip_fw_domatch() ze ktere se
dump_packet() vola
(vola se i odjinud ale tam jsem jen pripsal parametry)
if (skb->mac.ethernet)
{
printk(",srcMAC:%2.2hX:%2.2hX:%2.2hX:%2.2hX:%2.2hX:%2.2hX\n",
skb->mac.ethernet->h_source[0],
skb->mac.ethernet->h_source[1],
skb->mac.ethernet->h_source[2],
skb->mac.ethernet->h_source[3],
skb->mac.ethernet->h_source[4],
skb->mac.ethernet->h_source[5]);
}
else
{
printk(",srcMAC: nil pointer to address buffer\n");
};
Pozn: Nikdy jsem v logu nevidel zeby nastal stav skb->mac.ethernet ==
0
najde se nekdo, kdo mi rekne co delam spatne?
Mlcky predpokladam, ze skb nebude nikdy 0 ale mozna to je chybny
predpoklad...
Zdravi
D. Toman
Další informace o konferenci Linux