[Olsr-dev] [PATCH] plugins: fix build with musl
Daniel Golle
(spam-protected)
Fri May 15 21:40:43 CEST 2015
Sorry for the mess, hope this is properly addressed now by
testing for __GLIBC__ or __BIONIC__
On Fri, May 15, 2015 at 09:32:54PM +0200, Ferry Huberts wrote:
> I would rather have people post patches on the mailing list so that we (I)
> can review them.
>
> olsrd is rather complicated code in places and we build for a lot of
> platforms, build breakage is easily obtained, as demonstrated by this patch.
>
> I could have easily told you that before the patch was pushed
>
> So please do not encourage people to push directly.
>
>
> On 15/05/15 20:07, Saverio Proto wrote:
> >Hello Daniel,
> >
> >I think you can push this patch to olsrd master branch in git.
> >the git repository is open for commit without authentication.
> >
> >thank you
> >
> >Saverio
> >
> >
> >2015-05-15 19:13 GMT+02:00 Daniel Golle <(spam-protected)>:
> >>Introduce checks for __UCLIBC__ to compensate for
> >>incompatible definitions of struct udphdr present in
> >>different libc.
> >>glibc provides both field nameing styles, afaik all
> >>libcs except for uClibc provide the POSIX definition.
> >>
> >>Signed-off-by: Daniel Golle <(spam-protected)>
> >>---
> >>See also https://github.com/openwrt-routing/packages/pull/85
> >>
> >> lib/bmf/src/Address.c | 4 ++++
> >> lib/bmf/src/Bmf.c | 4 ++++
> >> lib/bmf/src/NetworkInterfaces.c | 9 +++++++++
> >> lib/mdns/src/mdns.c | 8 ++++++++
> >> lib/p2pd/src/p2pd.c | 16 ++++++++++++++++
> >> 5 files changed, 41 insertions(+)
> >>
> >>diff --git a/lib/bmf/src/Address.c b/lib/bmf/src/Address.c
> >>index 67e7499..9d244da 100644
> >>--- a/lib/bmf/src/Address.c
> >>+++ b/lib/bmf/src/Address.c
> >>@@ -142,7 +142,11 @@ int IsOlsrOrBmfPacket(unsigned char* ipPacket)
> >>
> >> /* Go into the UDP header and check port number */
> >> udpHeader = (struct udphdr*) ARM_NOWARN_ALIGN((ipPacket + ipHeaderLen));
> >>+#ifdef __UCLIBC__
> >> destPort = ntohs(udpHeader->dest);
> >>+#else
> >>+ destPort = ntohs(udpHeader->uh_dport);
> >>+#endif
> >>
> >> if (destPort == olsr_cnf->olsrport || destPort == BMF_ENCAP_PORT || destPort == 51698)
> >> /* TODO: #define for 51698 */
> >>diff --git a/lib/bmf/src/Bmf.c b/lib/bmf/src/Bmf.c
> >>index 9bbce42..3730557 100644
> >>--- a/lib/bmf/src/Bmf.c
> >>+++ b/lib/bmf/src/Bmf.c
> >>@@ -1028,7 +1028,11 @@ BMF_handle_listeningFd(int skfd, void *data, unsigned int flags __attribute__ ((
> >> }
> >>
> >> udpHeader = (struct udphdr*) ARM_NOWARN_ALIGN((rxBuffer + headerLength));
> >>+#ifdef __UCLIBC__
> >> destPort = ntohs(udpHeader->dest);
> >>+#else
> >>+ destPort = ntohs(udpHeader->uh_dport);
> >>+#endif
> >> if (destPort != BMF_ENCAP_PORT)
> >> {
> >> /* Not BMF */
> >>diff --git a/lib/bmf/src/NetworkInterfaces.c b/lib/bmf/src/NetworkInterfaces.c
> >>index 49a35a5..a1bc817 100644
> >>--- a/lib/bmf/src/NetworkInterfaces.c
> >>+++ b/lib/bmf/src/NetworkInterfaces.c
> >>@@ -50,6 +50,7 @@
> >> #include <assert.h> /* assert() */
> >> #include <net/if.h> /* socket(), ifreq, if_indextoname(), if_nametoindex() */
> >> #include <netinet/in.h> /* htons() */
> >>+#include <netinet/udp.h> /* struct udphdr */
> >> #include <linux/if_ether.h> /* ETH_P_IP */
> >> #include <linux/if_packet.h> /* packet_mreq, PACKET_MR_PROMISC, PACKET_ADD_MEMBERSHIP */
> >> #include <linux/if_tun.h> /* IFF_TAP */
> >>@@ -1893,7 +1894,11 @@ void CheckAndUpdateLocalBroadcast(unsigned char* ipPacket, union olsr_ip_addr* b
> >>
> >> /* RFC 1624, Eq. 3: HC' = ~(~HC - m + m') */
> >>
> >>+#ifdef __UCLIBC__
> >> check = ntohs(udph->check);
> >>+#else
> >>+ check = ntohs(udph->uh_sum);
> >>+#endif
> >>
> >> check = ~ (~ check - ((origDaddr >> 16) & 0xFFFF) + ((newDaddr >> 16) & 0xFFFF));
> >> check = ~ (~ check - (origDaddr & 0xFFFF) + (newDaddr & 0xFFFF));
> >>@@ -1901,7 +1906,11 @@ void CheckAndUpdateLocalBroadcast(unsigned char* ipPacket, union olsr_ip_addr* b
> >> /* Add carry */
> >> check = check + (check >> 16);
> >>
> >>+#ifdef __UCLIBC__
> >> udph->check = htons(check);
> >>+#else
> >>+ udph->uh_sum = htons(check);
> >>+#endif
> >> } /* if */
> >> } /* if */
> >> } /* CheckAndUpdateLocalBroadcast */
> >>diff --git a/lib/mdns/src/mdns.c b/lib/mdns/src/mdns.c
> >>index 8fc20f7..f8ed460 100644
> >>--- a/lib/mdns/src/mdns.c
> >>+++ b/lib/mdns/src/mdns.c
> >>@@ -462,7 +462,11 @@ BmfPacketCaptured(
> >> return; /* for */
> >> }
> >> udpHeader = (struct udphdr *)ARM_NOWARN_ALIGN(encapsulationUdpData + GetIpHeaderLength(encapsulationUdpData));
> >>+#ifdef __UCLIBC__
> >> destPort = ntohs(udpHeader->dest);
> >>+#else
> >>+ destPort = ntohs(udpHeader->uh_dport);
> >>+#endif
> >> if (destPort != 5353) {
> >> return;
> >> }
> >>@@ -498,7 +502,11 @@ BmfPacketCaptured(
> >> return; /* for */
> >> }
> >> udpHeader = (struct udphdr *)ARM_NOWARN_ALIGN(encapsulationUdpData + 40);
> >>+#ifdef __UCLIBC__
> >> destPort = ntohs(udpHeader->dest);
> >>+#else
> >>+ destPort = ntohs(udpHeader->uh_dport);
> >>+#endif
> >> if (destPort != 5353) {
> >> return;
> >> }
> >>diff --git a/lib/p2pd/src/p2pd.c b/lib/p2pd/src/p2pd.c
> >>index 60c4f74..77d2dff 100644
> >>--- a/lib/p2pd/src/p2pd.c
> >>+++ b/lib/p2pd/src/p2pd.c
> >>@@ -204,7 +204,11 @@ PacketReceivedFromOLSR(unsigned char *encapsulationUdpData, int len)
> >> udpHeader = (struct udphdr*) ARM_NOWARN_ALIGN((encapsulationUdpData +
> >> GetIpHeaderLength(encapsulationUdpData)));
> >> destAddr.v4.s_addr = ipHeader->ip_dst.s_addr;
> >>+#ifdef __UCLIBC__
> >> destPort = htons(udpHeader->dest);
> >>+#else
> >>+ destPort = htons(udpHeader->uh_dport);
> >>+#endif
> >> isInList = InUdpDestPortList(AF_INET, &destAddr, destPort);
> >> #ifdef INCLUDE_DEBUG_OUTPUT
> >> if (!isInList) {
> >>@@ -223,7 +227,11 @@ PacketReceivedFromOLSR(unsigned char *encapsulationUdpData, int len)
> >> if (ip6Header->ip6_nxt == SOL_UDP && !IsIpv6Fragment(ip6Header)) {
> >> udpHeader = (struct udphdr*) ARM_NOWARN_ALIGN((encapsulationUdpData + 40));
> >> memcpy(&destAddr.v6, &ip6Header->ip6_dst, sizeof(struct in6_addr));
> >>+#ifdef __UCLIBC__
> >> destPort = htons(udpHeader->dest);
> >>+#else
> >>+ destPort = htons(udpHeader->uh_dport);
> >>+#endif
> >> isInList = InUdpDestPortList(AF_INET6, &destAddr, destPort);
> >> #ifdef INCLUDE_DEBUG_OUTPUT
> >> if (!isInList) {
> >>@@ -695,7 +703,11 @@ P2pdPacketCaptured(unsigned char *encapsulationUdpData, int nBytes)
> >>
> >> udpHeader = (struct udphdr *) ARM_NOWARN_ALIGN((encapsulationUdpData +
> >> GetIpHeaderLength(encapsulationUdpData)));
> >>+#ifdef __UCLIBC__
> >> destPort = ntohs(udpHeader->dest);
> >>+#else
> >>+ destPort = ntohs(udpHeader->uh_dport);
> >>+#endif
> >>
> >> if (!InUdpDestPortList(AF_INET, &dst, destPort)) {
> >> #ifdef INCLUDE_DEBUG_OUTPUT
> >>@@ -739,7 +751,11 @@ P2pdPacketCaptured(unsigned char *encapsulationUdpData, int nBytes)
> >> return;
> >>
> >> udpHeader = (struct udphdr *) ARM_NOWARN_ALIGN((encapsulationUdpData + 40));
> >>+#ifdef __UCLIBC__
> >> destPort = ntohs(udpHeader->dest);
> >>+#else
> >>+ destPort = ntohs(udpHeader->uh_dport);
> >>+#endif
> >>
> >> if (!InUdpDestPortList(AF_INET6, &dst, destPort)) {
> >> #ifdef INCLUDE_DEBUG_OUTPUT
> >>--
> >>2.4.0
> >>
> >>
> >>--
> >>Olsr-dev mailing list
> >>(spam-protected)
> >>https://lists.olsr.org/mailman/listinfo/olsr-dev
> >
>
> --
> Ferry Huberts
More information about the Olsr-dev
mailing list