Hi,

I hope this is the right place to ask for a little bit of help as I'm 
currently beyond stuck on a challenge I'm trying to accomplish. I'm trying 
to write a "simple" LKM that properly uses a ieee80211 header to print 
information about the mac addresses (addr1->addr4) and later down the road 
try to send my own data.

I only need to get L2 working, no need for TCP/IP, just a proper ieee80211 
based on input from skb would be huge for me.

So my issue: when placing the ieee80211 on my mac_header after I hook my 
skb from my wireless device (wlan0 on android - I9100) I get a huge amount 
of zero's and random(?) numbers when trying to print the addresses. This 
leads me to the first conclusion that mac_header is placed wrong when using 
80211. After that I saw a lot of people just using the skb->data pointer. 
Now this gives even weirder issues for me and actually totally crashes my 
kernel. 
So I went back to starting with printing as much info as possible.
This is a sample output after I hook my packet type:

Skb->dev->name: wlan0

Skb->head: 0xe1d37040

Skb->mac_header: 0xe1d372a9

Skb->data: 0x510                           (!!!)

Skb->tail: 0xe1d37460

Skb->len: 617

Skb->hdr_len: 0


When trying to just capture this and only print a certain message when one 
of the addresses maches my dev->dev_addr I never get any data while the 
phone is connected and actively browsing the internet. 

I'm aware that before I throw my hook some data is being changed around 
already in net/core/dev.c and in net/mac80211/rx.c The weird part is that 
these seem to be putting on ethernet headers (skb->protocol = 
eth_type_trans(skb, dev); AND kb_pull_inline(skb, ETH_HLEN);
eth = eth_hdr(skb); ) on items that should be ieee80211 headers.

Any insights as to why my data header is in such a weird spot (nowhere 
between my head and my tail) or where I should call the ieee80211_header 
on? I have tried working my way back from tail with len and adding another 
ETH_HLEN but while I get data, it never really matches my own mac addr so 
I'm assuming the data is still pretty wrong.

Added links:


https://github.com/mathieudevos/kernelmodules/blob/master/ethernet_test.c (my 
own LKM)
https://github.com/mathieudevos/linux_kernel_3.2.48 (used to get all the .c 
files from to acquire information)

If possible I'd like to write a small guide after these issues have been 
fixes for people who like me would like to get started with a basic LKM in 
the ieee80211 part of linux.

If this is not the place to ask these questions, please disregard me 
(hopefully it is) but all help would be welcome.


Kind regards,
Mathieu Devos

-- 
-- 
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel
--- 
You received this message because you are subscribed to the Google Groups 
"Android Linux Kernel Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-kernel+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to