[Olsr-dev] [PATCH] plugins: fix build with musl

Ferry Huberts (spam-protected)
Fri May 15 21:55:25 CEST 2015


A grand entry.
4 patches were needed, of which at least 1 wasn't even compiled before 
being pushed.

Don't ever push anything without review into our repository again please.

On 15/05/15 21:40, Daniel Golle wrote:
> 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

-- 
Ferry Huberts




More information about the Olsr-dev mailing list