batctl14: musl build fix

This commit is contained in:
q66 2019-12-17 15:01:45 +01:00
parent bb6228eb65
commit 0afefdaa37
1 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,94 @@
Use POSIX instead of Linux fields. Glibc has both, musl only has POSIX.
--- ioctl.c
+++ ioctl.c
@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/if.h>
--- ping.c
+++ ping.c
@@ -30,6 +30,7 @@
#include <fcntl.h>
#include <string.h>
#include <math.h>
+#include <linux/types.h>
#include "main.h"
#include "ping.h"
--- tcpdump.c
+++ tcpdump.c
@@ -36,6 +36,7 @@
#include <netinet/udp.h>
#include <netinet/ip_icmp.h>
#include <netinet/if_ether.h>
+#include <linux/types.h>
#include "main.h"
#include "tcpdump.h"
@@ -230,7 +231,7 @@ static void dump_ip(unsigned char *packet_buff, ssize_t buff_len, int time_print
printf("%s: ICMP ", inet_ntoa(*(struct in_addr *)&iphdr->daddr));
printf("%s udp port %hu unreachable, length %zu\n",
inet_ntoa(*(struct in_addr *)&tmp_iphdr->daddr),
- ntohs(tmp_udphdr->dest), (size_t)buff_len - (iphdr->ihl * 4));
+ ntohs(tmp_udphdr->uh_dport), (size_t)buff_len - (iphdr->ihl * 4));
break;
default:
printf("%s: ICMP unreachable %hhu, length %zu\n",
@@ -261,25 +262,25 @@ static void dump_ip(unsigned char *packet_buff, ssize_t buff_len, int time_print
break;
case IPPROTO_TCP:
tcphdr = (struct tcphdr *)(packet_buff + (iphdr->ihl * 4));
- tcp_header_len = tcphdr->doff * 4;
+ tcp_header_len = tcphdr->th_off * 4;
LEN_CHECK((size_t)buff_len - (iphdr->ihl * 4),
(size_t)tcp_header_len, "TCP");
- printf("IP %s.%i > ", inet_ntoa(*(struct in_addr *)&iphdr->saddr), ntohs(tcphdr->source));
+ printf("IP %s.%i > ", inet_ntoa(*(struct in_addr *)&iphdr->saddr), ntohs(tcphdr->th_sport));
printf("%s.%i: TCP, flags [%c%c%c%c%c%c], length %zu\n",
- inet_ntoa(*(struct in_addr *)&iphdr->daddr), ntohs(tcphdr->dest),
- (tcphdr->fin ? 'F' : '.'), (tcphdr->syn ? 'S' : '.'),
- (tcphdr->rst ? 'R' : '.'), (tcphdr->psh ? 'P' : '.'),
- (tcphdr->ack ? 'A' : '.'), (tcphdr->urg ? 'U' : '.'),
+ inet_ntoa(*(struct in_addr *)&iphdr->daddr), ntohs(tcphdr->th_dport),
+ (tcphdr->th_flags & TH_FIN ? 'F' : '.'), (tcphdr->th_flags & TH_SYN ? 'S' : '.'),
+ (tcphdr->th_flags & TH_RST ? 'R' : '.'), (tcphdr->th_flags & TH_PUSH ? 'P' : '.'),
+ (tcphdr->th_flags & TH_ACK ? 'A' : '.'), (tcphdr->th_flags & TH_URG ? 'U' : '.'),
(size_t)buff_len - (iphdr->ihl * 4) - tcp_header_len);
break;
case IPPROTO_UDP:
LEN_CHECK((size_t)buff_len - (iphdr->ihl * 4), sizeof(struct udphdr), "UDP");
udphdr = (struct udphdr *)(packet_buff + (iphdr->ihl * 4));
- printf("IP %s.%i > ", inet_ntoa(*(struct in_addr *)&iphdr->saddr), ntohs(udphdr->source));
+ printf("IP %s.%i > ", inet_ntoa(*(struct in_addr *)&iphdr->saddr), ntohs(udphdr->uh_sport));
- switch (ntohs(udphdr->dest)) {
+ switch (ntohs(udphdr->uh_dport)) {
case 67:
LEN_CHECK((size_t)buff_len - (iphdr->ihl * 4) - sizeof(struct udphdr), (size_t) 44, "DHCP");
printf("%s.67: BOOTP/DHCP, Request from %s, length %zu\n",
@@ -294,7 +295,7 @@ static void dump_ip(unsigned char *packet_buff, ssize_t buff_len, int time_print
break;
default:
printf("%s.%i: UDP, length %zu\n",
- inet_ntoa(*(struct in_addr *)&iphdr->daddr), ntohs(udphdr->dest),
+ inet_ntoa(*(struct in_addr *)&iphdr->daddr), ntohs(udphdr->uh_dport),
(size_t)buff_len - (iphdr->ihl * 4) - sizeof(struct udphdr));
break;
}
--- traceroute.c
+++ traceroute.c
@@ -28,6 +28,7 @@
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
+#include <linux/types.h>
#include "main.h"
#include "traceroute.h"