Index: src/interfaces.c --- src/interfaces.c.orig +++ src/interfaces.c @@ -28,7 +28,7 @@ #include #include #include -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) #include #endif #include @@ -37,6 +37,11 @@ #include #define ETH_FRAME_LEN (ETHER_MAX_LEN - ETHER_CRC_LEN) #define ETH_ALEN ETHER_ADDR_LEN +#elif defined(__OpenBSD__) +#include +#include +#define ETH_FRAME_LEN (ETHER_MAX_LEN - ETHER_CRC_LEN) +#define ETH_ALEN ETHER_ADDR_LEN #else #include #endif @@ -298,7 +303,7 @@ int net_send_udp(const int fd, struct net_interface *i */ static unsigned char stackbuf[ETH_FRAME_LEN]; void* buffer = (void*)&stackbuf; -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) struct ether_header *eh = (struct ether_header *)buffer; struct ip *ip = (struct ip *)(buffer + 14); #else @@ -325,7 +330,7 @@ int net_send_udp(const int fd, struct net_interface *i } /* Init ethernet header */ -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) memcpy(eh->ether_shost, sourcemac, ETH_ALEN); memcpy(eh->ether_dhost, destmac, ETH_ALEN); eh->ether_type = htons(ETHERTYPE_IP); @@ -350,7 +355,7 @@ int net_send_udp(const int fd, struct net_interface *i #endif /* Init IP Header */ -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) ip->ip_v = 4; ip->ip_hl = 5; ip->ip_tos = 0x10; @@ -377,14 +382,14 @@ int net_send_udp(const int fd, struct net_interface *i #endif /* Calculate checksum for IP header */ -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) ip->ip_sum = in_cksum((unsigned short *)ip, sizeof(struct ip)); #else ip->check = in_cksum((unsigned short *)ip, sizeof(struct iphdr)); #endif /* Init UDP Header */ -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) udp->uh_sport = htons(sourceport); udp->uh_dport = htons(destport); udp->uh_ulen = htons(sizeof(struct udphdr) + datalen); @@ -400,7 +405,7 @@ int net_send_udp(const int fd, struct net_interface *i memcpy(rest, data, datalen); /* Add UDP checksum */ -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) udp->uh_sum = udp_sum_calc((unsigned char *)&(ip->ip_src.s_addr), (unsigned char *)&(ip->ip_dst.s_addr), (unsigned char *)udp,