summaryrefslogtreecommitdiffstats
path: root/proto/ospf/lsalib.h
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/lsalib.h')
-rw-r--r--proto/ospf/lsalib.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/proto/ospf/lsalib.h b/proto/ospf/lsalib.h
index a799de3..f98a1bd 100644
--- a/proto/ospf/lsalib.h
+++ b/proto/ospf/lsalib.h
@@ -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