Endian-related bug fixes sent by Krzysztof Szuster <kszuster@polbox.com>

This commit is contained in:
Ondrej Filip 2003-08-26 10:41:02 +00:00
parent 1d1a3c1c2a
commit c11007bc42
2 changed files with 13 additions and 6 deletions

View file

@ -337,11 +337,11 @@ lsasum_check(struct ospf_lsa_header *h,void *body,struct proto_ospf *po)
u8 *sp, *ep, *p, *q, *b; u8 *sp, *ep, *p, *q, *b;
int c0 = 0, c1 = 0; int c0 = 0, c1 = 0;
int x, y; int x, y;
u16 length,chsum; u16 length;
b=body; b = body;
sp = (char *) &h->options; sp = (char *) &h->options;
length=ntohs(h->length)-2; length = ntohs(h->length)-2;
h->checksum = 0; h->checksum = 0;
for (ep = sp + length; sp < ep; sp = q) for (ep = sp + length; sp < ep; sp = q)
@ -376,9 +376,9 @@ lsasum_check(struct ospf_lsa_header *h,void *body,struct proto_ospf *po)
y = 510 - c0 - x; y = 510 - c0 - x;
if (y > 255) y -= 255; if (y > 255) y -= 255;
chsum= x + (y << 8); ((u8*)&h->checksum)[0] = x;
h->checksum = chsum; ((u8*)&h->checksum)[1] = y;
return chsum; return h->checksum;
} }
int int

View file

@ -178,10 +178,17 @@ struct ospf_hello_packet {
}; };
struct immsb { struct immsb {
#ifdef _BIG_ENDIAN
u8 padding:5;
u8 i:1;
u8 m:1;
u8 ms:1;
#else
u8 ms:1; u8 ms:1;
u8 m:1; u8 m:1;
u8 i:1; u8 i:1;
u8 padding:5; u8 padding:5;
#endif
}; };
union imms { union imms {