$OpenBSD: patch-libnetutil_netutil_cc,v 1.3 2012/12/19 17:12:11 giovanni Exp $
--- libnetutil/netutil.cc.orig	Thu Oct 11 05:11:53 2012
+++ libnetutil/netutil.cc	Fri Nov 30 12:41:47 2012
@@ -3087,7 +3087,6 @@ static int route_dst_netlink(const struct sockaddr_sto
                              const struct sockaddr_storage *spoofss) {
   struct sockaddr_nl snl;
   struct msghdr msg;
-  struct iovec iov;
   struct nlmsghdr *nlmsg;
   struct rtmsg *rtmsg;
   struct rtattr *rtattr;
@@ -3128,22 +3127,14 @@ static int route_dst_netlink(const struct sockaddr_sto
     add_rtattr_addr(nlmsg, &rtattr, &len, RTA_SRC, spoofss);
   }
 
-  iov.iov_base = nlmsg;
-  iov.iov_len = nlmsg->nlmsg_len;
-
   memset(&msg, 0, sizeof(msg));
   msg.msg_name = &snl;
   msg.msg_namelen = sizeof(snl);
-  msg.msg_iov = &iov;
-  msg.msg_iovlen = 1;
 
   rc = sendmsg(fd, &msg, 0);
   if (rc == -1)
     netutil_fatal("%s: cannot sendmsg: %s", __func__, strerror(errno));
 
-  iov.iov_base = buf;
-  iov.iov_len = sizeof(buf);
-
   len = recvmsg(fd, &msg, 0);
   if (len <= 0)
     netutil_fatal("%s: cannot recvmsg: %s", __func__, strerror(errno));
@@ -3769,7 +3760,6 @@ static const unsigned char *add_exthdr_ancillary(struc
 static int send_ipv6_ip(const struct sockaddr_in6 *dst,
   const unsigned char *packet, size_t packetlen) {
   struct msghdr msg;
-  struct iovec iov;
 
   const unsigned char *end;
   struct ip6_hdr *hdr;
@@ -3785,8 +3775,6 @@ static int send_ipv6_ip(const struct sockaddr_in6 *dst
   /* Set up sendmsg data structure. iov is filled in below. */
   msg.msg_name = (void *) dst;
   msg.msg_namelen = sizeof(*dst);
-  msg.msg_iov = &iov;
-  msg.msg_iovlen = 1;
   msg.msg_control = NULL;
   msg.msg_controllen = 0;
   msg.msg_flags = 0;
@@ -3845,8 +3833,6 @@ static int send_ipv6_ip(const struct sockaddr_in6 *dst
   }
 
   assert(packet <= end);
-  iov.iov_base = (unsigned char *) packet;
-  iov.iov_len = end - packet;
 
   n = sendmsg(sd, &msg, 0);
   if (n == -1)
@@ -4015,9 +4001,6 @@ int datalink_offset(int datalink)
 {
   if (datalink == DLT_EN10MB)
     return ETH_HDR_LEN;
-  else if (datalink == DLT_LINUX_SLL)
-    /* The datalink type is Linux "cooked" sockets. See pcap-linktype(7). */
-    return 16;
   else
     return -1;
 }
@@ -4054,7 +4037,7 @@ static int read_reply_pcap(pcap_t *pd, long to_usec,
     netutil_fatal("Cannot obtain datalink information: %s", pcap_geterr(pd));
   ioffset = datalink_offset(*datalink);
   if (ioffset < 0)
-    netutil_fatal("datalink_offset failed for type %d (DLT_EN10MB = %d, DLT_LINUX_SLL = %d)", *datalink, DLT_EN10MB, DLT_LINUX_SLL);
+    netutil_fatal("datalink_offset failed for type %d (DLT_EN10MB = %d)", *datalink, DLT_EN10MB);
   *offset = (unsigned int) ioffset;
 
   if (to_usec > 0) {
@@ -4154,10 +4137,6 @@ static bool accept_arp(const unsigned char *p, const s
 
   if (datalink == DLT_EN10MB) {
     return ntohs(*((u16 *) (p + 12))) == ETH_TYPE_ARP;
-  } else if (datalink == DLT_LINUX_SLL) {
-    return ntohs(*((u16 *) (p + 2))) == ARPHRD_ETHER && /* sll_hatype */
-      ntohs(*((u16 *) (p + 4))) == 6 && /* sll_halen */
-      ntohs(*((u16 *) (p + 14))) == ETH_TYPE_ARP; /* sll_protocol */
   } else {
     return false;
   }
