Subject: Re: help wanted with sys/net/if_ethersubr.c
To: None <tech-kern@NetBSD.org>
From: =?iso-8859-1?q?Philip=20Christian?= <philipchristian2003@yahoo.co.uk>
List: tech-kern
Date: 12/25/2003 21:34:05
I made the following changes to if_ethersubr.c
At the beginning of ether_input I added
struct ether_header eh_temp;
Then I replaced the *mtod(m, struct ether_header *) =
*eh
with
eh_temp = *eh
*mtod(m, struct ether_header *) = eh_temp
I'm sure that it's not good code, but I now have a
proper ESIS table, which proves the point.
Hopefully someone on the list can come up with a
better way to copy eh into m when they are overlapping
in memory, and I can test it.
We fixed sending on a raw clnp socket a year ago,
maybe I will be able to receive as well...
Philip
--- Philip Christian
<philipchristian2003@yahoo.co.uk> wrote: > I have two
i386 laptops
> one is corrupting its ESIS routing table and the
> other
> is not
> in fact I suspect that it is corrupting the source
> mac
> address of all incoming OSI packets (ESIS, ISIS,
> CLNP
> etc)
> i sort of know why, here is what i know:-
>
> if one looks in sys/net/if_ethersubr.c then:-
>
> the process for receiving packets starts at line 651
> at line 674 you get
> eh = mtod(m,struct ether_header *);
>
> however inside the ifdef ISO bit at line 935
> you find
> *mtod(m, struct ether_header *) = *eh
>
> on the pc that has a corrupted esis table then
> before
> that line
> eh->ether_shost is correct but after it is corrupted
>
> on the pc that doesn't have a corrupted esis table
> eh->ether_shost is accurate both before and after
> the
> *mtod line of code
>
> also, on the pc with the corrupted table then
> mtod(m, struct ether_header * ) is three bytes
> higher
> than eh
>
> on the pc without the corrupted table mtod(m, struct
> ether_header * ) is in a totally different place to
> eh
>
> given line 674 I don't understand either
>
> also I didn't think that you could just do a
> *pointer
> = *other-pointer if they are pointers to structures
> ?
> I thought that you would have to do a bcopy or
> something if you want to copy a whole structure over
> ?
> so I am not sure what this line is trying to acheive
>
> I'm afraid that I'm not enough of a programmer to
> get
> any further than that...
>
> thanks for any help, Philip
>
>
________________________________________________________________________
> Yahoo! Messenger - Communicate instantly..."Ping"
> your friends today! Download Messenger Now
> http://uk.messenger.yahoo.com/download/index.html
________________________________________________________________________
Yahoo! Messenger - Communicate instantly..."Ping"
your friends today! Download Messenger Now
http://uk.messenger.yahoo.com/download/index.html