diff --git a/lib/ChangeLog b/lib/ChangeLog
index 79ba714..6611196 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,7 +1,11 @@
-2004-10-13 Paul Jakma <paul@dishone.st>
+2004-10-22 Paul Jakma <paul@dishone.st>
 
 	* sockopt.c: (getsockopt_ipv4_ifindex) no ifindex should be 0, not
-          -1.
+          -1. 
+          (setsockopt_pktinfo) unexported
+	* sockopt.h: Cleanup SOCKOPT_CMSG defines a bit. Add a throwaway
+          define for SOPT_SIZE_CMSG_IFINDEX_IPV4 for systems which have
+          neither IP_RECVIF nor IP_PKTINFO (eg openbsd).
 
 2004-10-19 Hasso Tepper <hasso at quagga.net>
 
diff --git a/lib/sockopt.c b/lib/sockopt.c
index d16c2be..1d4063a 100644
--- a/lib/sockopt.c
+++ b/lib/sockopt.c
@@ -260,7 +260,7 @@
  * interface index.
  * Not portable for IPv4, use only setsockopt_ifindex for v4.
  */
-int 
+static int 
 setsockopt_pktinfo (int af, int sock, int val)
 {
   int ret = -1;
diff --git a/lib/sockopt.h b/lib/sockopt.h
index f6a4315..63e915d 100644
--- a/lib/sockopt.h
+++ b/lib/sockopt.h
@@ -48,34 +48,36 @@
  */
 #if defined (IP_PKTINFO)
 /* Linux in_pktinfo. */
-#define SOPT_SIZE_CMSG_PKTINFO_IPV4()  (sizeof (struct in_pktinfo))
-
+#define SOPT_SIZE_CMSG_PKTINFO_IPV4()  (CMSG_SPACE(sizeof (struct in_pktinfo)))
 /* XXX This should perhaps be defined even if IP_PKTINFO is not. */
 #define SOPT_SIZE_CMSG_PKTINFO(af) \
   ((af == AF_INET) ? SOPT_SIZE_CMSG_PKTINFO_IPV4() \
                    : SOPT_SIZE_CMSG_PKTINFO_IPV6()
+#endif /* IP_PKTINFO */
 
-#define SOPT_SIZE_CMSG_IFINDEX_IPV4()	SOPT_SIZE_CMSG_PKTINFO_IPV4()
-
-#elif defined (IP_RECVIF)
-/* BSD/Solaris.  Arguably these should say RECVIF rather than IFINDEX. */
+#if defined (IP_RECVIF)
+/* BSD/Solaris */
 
 #if defined (SUNOS_5)
-#define SOPT_SIZE_CMSG_IFINDEX_IPV4()  (sizeof (uint_t))
+#define SOPT_SIZE_CMSG_RECVIF_IPV4()  (sizeof (uint_t))
 #else
-#define SOPT_SIZE_CMSG_IFINDEX_IPV4()	\
+#define SOPT_SIZE_CMSG_RECVIF_IPV4()	\
 	__CMSG_ALIGN((sizeof (struct sockaddr_dl)))
 #endif /* SUNOS_5 */
+#endif /* IP_RECVIF */
 
-#endif
+/* SOPT_SIZE_CMSG_IFINDEX_IPV4 - portable type */
+#if defined (SOPT_SIZE_CMSG_PKTINFO)
+#define SOPT_SIZE_CMSG_IFINDEX_IPV4() SOPT_SIZE_CMSG_PKTINFO_IPV4()
+#elif defined (SOPT_SIZE_CMSG_RECVIF_IPV4)
+#define SOPT_SIZE_CMSG_IFINDEX_IPV4() SOPT_SIZE_CMSG_RECVIF_IPV4()
+#elif /* Nothing available */
+#define SOPT_SIZE_CMSG_IFINDEX_IPV4() (sizeof (char *))
+#endif /* SOPT_SIZE_CMSG_IFINDEX_IPV4 */
 
-/*
- * AF-parameterized message size.
- * XXX Why is this here?  Is it used?  The v6 case is not defined. 
- */
 #define SOPT_SIZE_CMSG_IFINDEX(af) \
-  ((af == AF_INET) ? SOPT_SIZE_CMSG_IFINDEX_IPV4() \
-                   : SOPT_SIZE_CMSG_IFINDEX_IPV6()
+  (((af) == AF_INET) : SOPT_SIZE_CMSG_IFINDEX_IPV4() \
+                    ? SOPT_SIZE_CMSG_PKTINFO_IPV6())
 
 int setsockopt_multicast_ipv4(int sock, 
 			     int optname, 
@@ -83,12 +85,6 @@
 			     unsigned int mcast_addr,
 			     unsigned int ifindex);
 
-/*
- * XXX Exactly what is this an interface to?  Specifically, what calls
- * can be made after calling it?
- */
-int setsockopt_pktinfo (int, int, int);
-
 /* Ask for, and get, ifindex, by whatever method is supported. */
 int setsockopt_ifindex (int, int, int);
 int getsockopt_ifindex (int, struct msghdr *);
