Skip LSA host<->network endianity conversions on big endians.
This commit is contained in:
parent
c1b51598d4
commit
4e5fb4b60c
2 changed files with 16 additions and 2 deletions
|
@ -87,6 +87,7 @@ ospf_age(struct proto_ospf *po)
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef CPU_BIG_ENDIAN
|
||||
void
|
||||
htonlsah(struct ospf_lsa_header *h, struct ospf_lsa_header *n)
|
||||
{
|
||||
|
@ -138,6 +139,7 @@ ntohlsab(void *n, void *h, u16 len)
|
|||
for (i = 0; i < (len / sizeof(u32)); i++)
|
||||
hid[i] = ntohl(nid[i]);
|
||||
}
|
||||
#endif /* little endian */
|
||||
|
||||
/*
|
||||
void
|
||||
|
@ -184,7 +186,7 @@ lsasum_calculate(struct ospf_lsa_header *h, void *body)
|
|||
|
||||
// log(L_WARN "Checksum %R %R %d start (len %d)", h->id, h->rt, h->type, length);
|
||||
htonlsah(h, h);
|
||||
htonlsab(body, body, length - sizeof(struct ospf_lsa_header));
|
||||
htonlsab1(body, length - sizeof(struct ospf_lsa_header));
|
||||
|
||||
/*
|
||||
char buf[1024];
|
||||
|
@ -198,7 +200,7 @@ lsasum_calculate(struct ospf_lsa_header *h, void *body)
|
|||
// log(L_WARN "Checksum result %4x", h->checksum);
|
||||
|
||||
ntohlsah(h, h);
|
||||
ntohlsab(body, body, length - sizeof(struct ospf_lsa_header));
|
||||
ntohlsab1(body, length - sizeof(struct ospf_lsa_header));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -10,10 +10,22 @@
|
|||
#ifndef _BIRD_OSPF_LSALIB_H_
|
||||
#define _BIRD_OSPF_LSALIB_H_
|
||||
|
||||
#ifdef CPU_BIG_ENDIAN
|
||||
static inline void htonlsah(struct ospf_lsa_header *h, struct ospf_lsa_header *n) { *n = *h; };
|
||||
static inline void ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h) { *h = *n; };
|
||||
static inline void htonlsab(void *h, void *n, u16 len) { memcpy(n, h, len); };
|
||||
static inline void ntohlsab(void *n, void *h, u16 len) { memcpy(h, n, len); };
|
||||
static inline void htonlsab1(void *h, u16 len) { };
|
||||
static inline void ntohlsab1(void *n, u16 len) { };
|
||||
#else
|
||||
void htonlsah(struct ospf_lsa_header *h, struct ospf_lsa_header *n);
|
||||
void ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h);
|
||||
void htonlsab(void *h, void *n, u16 len);
|
||||
void ntohlsab(void *n, void *h, u16 len);
|
||||
static inline void htonlsab1(void *h, u16 len) { htonlsab(h, h, len); };
|
||||
static inline void ntohlsab1(void *n, u16 len) { ntohlsab(n, n, len); };
|
||||
#endif
|
||||
|
||||
void lsasum_calculate(struct ospf_lsa_header *header, void *body);
|
||||
u16 lsasum_check(struct ospf_lsa_header *h, void *body);
|
||||
#define CMP_NEWER 1
|
||||
|
|
Loading…
Reference in a new issue