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

Ferry Huberts (spam-protected)
Fri May 15 21:45:43 CEST 2015


Did you actually compile it...??

I'm reverting now.
Don't push anything until it's been reviewed


On 15/05/15 21:44, Ferry Huberts wrote:
> It is still not fix.
> This is a mess.
> And now we can add linux32 to the list of broken builds.
>
> I _really_ dislike build breakage.
>
> Either you fix it in the next patch that you are going to put on the
> mailing list first, or I'll revert all of your patches.
>
> 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