jeudi 7 juillet 2016

Print MAC address from Ethernet header

I want to check the Ethernet header of packet that is porececed by iptables (1.4), so i need to write a module that catch packet and apply my function. I am looking for the mac destination value in the Ethernet header (just for test purpose), so the code should be like this:

static bool match(const struct sk_buff *skb, struct xt_action_param *par)
{
    struct ethhdr *hdr;        
    hdr = eth_hdr(skb);
    printk(KERN_INFO "hdr->h_dest 0x%xn", hdr->h_dest);
    printk(KERN_INFO "MACPROTO=%04xn", hdr->h_proto);

The problem is that i cant get the correct value, i have some thing that is not even in the real frame (i checked that with Wireshark), so is it the right function to get Ethernet header attributs?

update: i used the solution presented in the post, but still have wrong output, it's like if the structure point to wrong place enter image description here

This image show result when i use nc to send "aaa" string, the ethernet header should be the same in the to frame, but as present in the result, it's not.

Aucun commentaire:

Enregistrer un commentaire