--- util.c.orig 2019-11-15 11:52:26 UTC +++ util.c @@ -285,7 +285,7 @@ static int GetInterfaceIndex( const char *psz_name ) close( i_fd ); -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) return ifr.ifr_index; #else return ifr.ifr_ifindex; @@ -454,7 +454,7 @@ static void RawFillHeaders(struct udprawpkt *dgram, uint8_t ttl, uint8_t tos, uint16_t len) { #ifndef __APPLE__ -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) struct ip *iph = &(dgram->iph); #else struct iphdr *iph = &(dgram->iph); @@ -471,7 +471,7 @@ static void RawFillHeaders(struct udprawpkt *dgram, printf("Filling raw header (%p) (%s:%u -> %s:%u)\n", dgram, ipsrc_str, portsrc, ipdst_str, portdst); #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) // Fill ip header iph->ip_hl = 5; // ip header with no specific option iph->ip_v = 4; @@ -558,7 +558,7 @@ int OpenSocket( const char *_psz_arg, int i_ttl, uint1 in_addr_t i_raw_srcaddr = INADDR_ANY; int i_raw_srcport = 0; char *psz_ifname = NULL; -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) int hincl = 1; #endif @@ -718,7 +718,7 @@ int OpenSocket( const char *_psz_arg, int i_ttl, uint1 i_raw_srcaddr, connect_addr.sin.sin_addr.s_addr, i_raw_srcport, ntohs(connect_addr.sin.sin_port), i_ttl, i_tos, 0); i_fd = socket( AF_INET, SOCK_RAW, IPPROTO_RAW ); -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) if ( setsockopt( i_fd, IPPROTO_IP, IP_HDRINCL, &hincl, sizeof(hincl)) == -1 ) { msg_Err( NULL, "unable to set socket (%s)", strerror(errno) ); @@ -755,7 +755,7 @@ int OpenSocket( const char *_psz_arg, int i_ttl, uint1 if ( bind_addr.ss.ss_family != AF_UNSPEC ) { - #if !defined(__APPLE__) && !defined(__FreeBSD__) + #if !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__DragonFly__) if ( IN6_IS_ADDR_MULTICAST( &bind_addr.sin6.sin6_addr ) ) { struct ipv6_mreq imr; @@ -838,7 +838,7 @@ normal_bind: } else #endif -#ifndef __FreeBSD__ +#if !defined(__FreeBSD__) && !defined(__DragonFly__) if ( i_bind_if_index ) { /* Linux-specific interface-bound multicast */