NetBSD-3.1 上で展開して ./configure; make するが、

gcc -DHAVE_CONFIG_H -I. -I. -I../.. -g -O2
-I/usr/pkg/include/glib/glib-1.2 -I/usr/pkg/lib/glib/include
-D_REENTRANT -D_THREAD_SAFE -c adaptation.c -MT adaptation.lo -MD -MP
-MF .deps/adaptation.TPlo -fPIC -DPIC -o .libs/adaptation.o
adaptation.c:129:28: net/if_var.h: No such file or directory
adaptation.c: In function `adl_equal_address':
adaptation.c:708: error: structure has no member named `s6_addr32'

(snip)

*** Error code 1

Stop.

(snip)

となり、コンパイルが出來ない。

そこで以下の變更を加へて事無きを得た。

$ diff -c sctplib/sctp/adaptation.c.org sctplib/sctp/adaptation.c
*** sctplib/sctp/adaptation.c.org       Thu Dec  7 17:19:17 2006
--- sctplib/sctp/adaptation.c   Thu Dec  7 17:34:45 2006
***************
*** 126,132 ****
--- 126,136 ----
      #include <net/if_types.h>
      #include <net/route.h>
  #ifndef SOLARIS
+ #ifndef __NetBSD__
      #include <net/if_var.h>
+ #else
+     #define s6_addr32 __u6_addr.__u6_addr32
+ #endif
      #include <machine/param.h>
      #define ROUNDUP(a, size) (((a) & ((size)-1)) ? (1 + ((a) | ((size)-1))) : (a))
      #define NEXT_SA(ap) ap = (struct sockaddr *) \

この變更は、先づ、net/if_var.h の #include を止めた。
次に s6_addr32 といふ定義は、/usr/include/netinet6/in6.h を見ると、

#ifdef _KERNEL	/* XXX nonstandard */
#define s6_addr8  __u6_addr.__u6_addr8
#define s6_addr16 __u6_addr.__u6_addr16
#define s6_addr32 __u6_addr.__u6_addr32
#endif

となつてゐる爲、上のやうな變更を加へた。
最終更新:2006年12月07日 18:15