mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	Skip LSA host<->network endianity conversions on big endians.
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user