capturing packet from wlan0 with netgraph?

Adrian Chadd adrian at freebsd.org
Mon Jan 17 05:43:03 UTC 2011


Hi,

Please file a PR about this and the output of "show registers".

I bet that the ip pointer isn't aligned at that point in the code.
Whatever is passing the packet to the IP layer should be re-aligning
things beforehand.
(eg, look at what the ethernet ipfw hook code does - if the ether type
is ipv4/ipv6, it actually realigns the packets before passing it back
up the stack.)



Adrian

On 13 January 2011 16:25, Monthadar Al Jaberi <monthadar at gmail.com> wrote:
> sorry but I have not worked with this for a while now, After some
> thoughts I dont think using netgraph will do me any good, because
> traffic can still flow through the antennas of the cards.
>
> If you think it would still be useful to see more ddb prompt for other
> scenarios I am happy to try and supply that, but I won't have some
> free time until late tomorrow :)
>
> thnx again!
>
> On Thu, Jan 13, 2011 at 7:53 AM, Adrian Chadd <adrian at freebsd.org> wrote:
>> I've encountered this before.
>>
>> The mbuf's there aren't always aligned at this point.
>>
>>
>>
>> Adrian
>>
>> On 13 January 2011 14:17, Jayachandran C. <c.jayachandran at gmail.com> wrote:
>>> On Thu, Jan 13, 2011 at 11:08 AM, Adrian Chadd <adrian at freebsd.org> wrote:
>>>> Find out what the address is that's causing the problem. There's
>>>> plenty of places where unaligned mbuf's exist in the IP code and
>>>> aren't correctly realigned before being touched.
>>>>
>>>> MIPS people - is "address error" an alignment problem?
>>>
>>> Address error can be an alignment problem (or some other cases like
>>> accessing kernel address from userspace).
>>>
>>> But looking at the crash, it certainly seems like in ip_input, the line
>>>     435         if (ip->ip_v != IPVERSION) {
>>>
>>> got a bad address for the ip pointer.
>>>
>>> The output of 'show registers' at the ddb prompt would be useful to
>>> debug further.
>>>
>>>
>>>> On 30 December 2010 21:47, Monthadar Al Jaberi <monthadar at gmail.com> wrote:
>>>>> Hi,
>>>>>
>>>>> I have an idea in my head and would like to know if it is possible.
>>>>>
>>>>> I want to simulate and test the net80211 mesh code in FreeBSD Current.
>>>>> I have an RSPRO board with 3 atheros cards.
>>>>>
>>>>> My  basic idea is to run three jails each having its own network
>>>>> stack, and redirect all data packets coming out/in of the wlan driver
>>>>> to a Server running a home brew application that simulates the medium.
>>>>> That would be great, right? Realtime unchanged code to test, running
>>>>> different application in their own jails.
>>>>>
>>>>> So first I started to test netgraph with a simple test case, I want to
>>>>> receive all packets from one wireless card and see the data in
>>>>> wireshark or tcpdump...
>>>>>
>>>>> This is my netgraph code:
>>>>> mkpeer wlan0: hub lower hook0
>>>>> name wlan0:lower hub
>>>>> connect hub: wlan0: hook1 upper
>>>>> connect hub: arge0: hook2 lower
>>>>>
>>>>>
>>>>> So if I understood man ng_ether correct, this should capture
>>>>> everything from wlan and redirect to ethernet cable.
>>>>>
>>>>> But I get a panic after a couple of seconds:
>>>>> Trap cause = 4 (address error (load or I-fetch) - kernel mode)
>>>>> [ thread pid 11 tid 100037 ]
>>>>> Stopped at      ip_input+0xd8:  lw      v0,0(s0)
>>>>>
>>>>> I suspect that data flows to all hooks of the hub, and that is a bad
>>>>> thing right? Need to create a special hub node to filter data? Or
>>>>> maybe use two ethernet cables for out resp. in?
>>>>>
>>>>> Is it even possible to do what I want? Or am I thinking wrong? And is
>>>>> there a simpler way?
>>>>>
>>>>> What I want is to test mesh code in a bunch of FreeBSD systems without
>>>>> moving the hardware, one could just stack RSPROs and connected them a
>>>>> big switch and a PC.
>>>>> Hope was I clear in my thoughts.
>>>>>
>>>>> Best regards,
>>>>> --
>>>>> //Monthadar Al Jaberi
>>>
>>> JC.
>>>
>>
>
>
>
> --
> //Monthadar Al Jaberi
>


More information about the freebsd-net mailing list