components/dnsmasq/patches/02_compile_dhcp_release.patch
author Petr Sumbera <petr.sumbera@oracle.com>
Wed, 05 Oct 2016 01:21:05 -0700
branchs11u3-sru
changeset 7090 49c102d793d0
parent 3200 16d08ab96b7f
child 6746 5a7cd15a88f8
permissions -rw-r--r--
24698806 Upgrade Thunderbird to version 45.3.0 24802000 problem in TBIRD/MAILER
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3200
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     1
Add hooks to compile contrib/wrt/dhcp_release.c. This utility is used to
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     2
send a DHCPRELEASE message to tell the local DHCP server to delete a
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     3
particular lease.
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     4
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     5
Solaris doesn't support AF_NETLINK, so use getifaddrs() to determine the
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     6
IP address of an interface on which Dnsmasq process is listening.
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     7
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     8
This patch was developed in-house. Since it is Solaris-specific it is not
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
     9
suitable for upstream.
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    10
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    11
--- dnsmasq-2.68/Makefile	2013-12-08 07:58:29.000000000 -0800
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    12
+++ NEW/Makefile	2014-07-06 20:06:34.886232993 -0700
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    13
@@ -19,6 +19,7 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    14
 # Variables you may well want to override.
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    15
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    16
 PREFIX        = /usr/local
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    17
+LIBDIR        = $(PREFIX)/lib/inet
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    18
 BINDIR        = $(PREFIX)/sbin
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    19
 MANDIR        = $(PREFIX)/share/man
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    20
 LOCALEDIR     = $(PREFIX)/share/locale
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    21
@@ -43,6 +44,7 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    22
 SRC = src
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    23
 PO  = po
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    24
 MAN = man
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    25
+WRT = contrib/wrt
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    26
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    27
 #################################################################
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    28
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    29
@@ -67,6 +69,8 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    30
        helper.o tftp.o log.o conntrack.o dhcp6.o rfc3315.o \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    31
        dhcp-common.o outpacket.o radv.o slaac.o auth.o ipset.o domain.o
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    32
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    33
+dhcp_release_objs = dhcp_release.o
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    34
+
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    35
 hdrs = dnsmasq.h config.h dhcp-protocol.h dhcp6-protocol.h \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    36
        dns-protocol.h radv-protocol.h
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    37
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    38
@@ -75,11 +79,12 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    39
  top="$(top)" \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    40
  build_cflags="$(version) $(dbus_cflags) $(idn_cflags) $(ct_cflags) $(lua_cflags)" \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    41
  build_libs="$(dbus_libs) $(idn_libs) $(ct_libs) $(lua_libs) $(sunos_libs)" \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    42
- -f $(top)/Makefile dnsmasq 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    43
+ -f $(top)/Makefile dnsmasq dhcp_release
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    44
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    45
 mostly_clean :
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    46
 	rm -f $(BUILDDIR)/*.mo $(BUILDDIR)/*.pot 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    47
-	rm -f $(BUILDDIR)/.configured $(BUILDDIR)/*.o $(BUILDDIR)/dnsmasq.a $(BUILDDIR)/dnsmasq 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    48
+	rm -f $(BUILDDIR)/.configured $(BUILDDIR)/*.o $(BUILDDIR)/dnsmasq.a \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    49
+		$(BUILDDIR)/dnsmasq $(BUILDDIR)/dhcp_release
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    50
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    51
 clean : mostly_clean
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    52
 	rm -f $(BUILDDIR)/dnsmasq_baseline
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    53
@@ -89,9 +94,11 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    54
 install : all install-common
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    55
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    56
 install-common :
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    57
-	$(INSTALL) -d $(DESTDIR)$(BINDIR) -d $(DESTDIR)$(MANDIR)/man8
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    58
+	$(INSTALL) -d $(DESTDIR)$(BINDIR) -d $(DESTDIR)$(MANDIR)/man8 \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    59
+		-d $(DESTDIR)/$(LIBDIR)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    60
 	$(INSTALL) -m 644 $(MAN)/dnsmasq.8 $(DESTDIR)$(MANDIR)/man8 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    61
 	$(INSTALL) -m 755 $(BUILDDIR)/dnsmasq $(DESTDIR)$(BINDIR)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    62
+	$(INSTALL) -m 755 $(BUILDDIR)/dhcp_release $(DESTDIR)$(LIBDIR)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    63
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    64
 all-i18n : $(BUILDDIR)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    65
 	@cd $(BUILDDIR) && $(MAKE) \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    66
@@ -99,7 +106,7 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    67
  i18n=-DLOCALEDIR=\'\"$(LOCALEDIR)\"\' \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    68
  build_cflags="$(version) $(dbus_cflags) $(ct_cflags) $(lua_cflags) `$(PKG_CONFIG) --cflags libidn`" \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    69
  build_libs="$(dbus_libs) $(ct_libs) $(lua_libs) $(sunos_libs) `$(PKG_CONFIG) --libs libidn`"  \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    70
- -f $(top)/Makefile dnsmasq
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    71
+ -f $(top)/Makefile dnsmasq dhcp_release
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    72
 	for f in `cd $(PO); echo *.po`; do \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    73
 		cd $(top) && cd $(BUILDDIR) && $(MAKE) top="$(top)" -f $(top)/Makefile $${f%.po}.mo; \
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    74
 	done
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    75
@@ -142,12 +149,18 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    76
 $(objs:.o=.c) $(hdrs):
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    77
 	ln -s $(top)/$(SRC)/$@ .
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    78
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    79
+$(dhcp_release_objs:.o=.c):
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    80
+	ln -s $(top)/$(WRT)/$@ .
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    81
+
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    82
 .c.o:
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    83
 	$(CC) $(CFLAGS) $(COPTS) $(i18n) $(build_cflags) $(RPM_OPT_FLAGS) -c $<	
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    84
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    85
 dnsmasq : .configured $(hdrs) $(objs)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    86
 	$(CC) $(LDFLAGS) -o $@ $(objs) $(build_libs) $(LIBS) 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    87
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    88
+dhcp_release : .configured $(hdrs) $(dhcp_release_objs)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    89
+	$(CC) $(LDFLAGS) -o $@ $(dhcp_release_objs) $(build_libs) $(LIBS) 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    90
+
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    91
 dnsmasq.pot : $(objs:.o=.c) $(hdrs)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    92
 	$(XGETTEXT) -d dnsmasq --foreign-user --omit-header --keyword=_ -o $@ -i $(objs:.o=.c)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    93
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    94
--- dnsmasq-2.68/contrib/wrt/dhcp_release.c	2013-12-08 07:58:29.000000000 -0800
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    95
+++ NEW/contrib/wrt/dhcp_release.c	2014-07-04 14:57:37.992103839 -0700
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    96
@@ -33,6 +33,10 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    97
    The client-id is optional. If it is "*" then it treated as being missing.
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    98
 */
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
    99
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   100
+#if defined(__sun) || defined(__sun__)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   101
+#define HAVE_SOLARIS_NETWORK
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   102
+#endif
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   103
+
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   104
 #include <sys/types.h> 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   105
 #include <netinet/in.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   106
 #include <net/if.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   107
@@ -44,9 +48,13 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   108
 #include <stdlib.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   109
 #include <net/if_arp.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   110
 #include <sys/ioctl.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   111
+#ifdef HAVE_SOLARIS_NETWORK
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   112
+#include <ifaddrs.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   113
+#else
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   114
 #include <linux/types.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   115
 #include <linux/netlink.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   116
 #include <linux/rtnetlink.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   117
+#endif
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   118
 #include <errno.h>
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   119
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   120
 #define DHCP_CHADDR_MAX          16
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   121
@@ -73,6 +81,7 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   122
   unsigned char options[308];
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   123
 };
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   124
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   125
+#if !defined(HAVE_SOLARIS_NETWORK)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   126
 static struct iovec iov;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   127
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   128
 static int expand_buf(struct iovec *iov, size_t size)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   129
@@ -139,6 +148,8 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   130
   return rc;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   131
 }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   132
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   133
+#endif
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   134
+
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   135
 static int parse_hex(char *in, unsigned char *out, int maxlen, int *mac_type)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   136
 {
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   137
   int i = 0;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   138
@@ -178,6 +189,7 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   139
   return (a.s_addr & mask.s_addr) == (b.s_addr & mask.s_addr);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   140
 }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   141
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   142
+#if !defined(HAVE_SOLARIS_NETWORK)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   143
 static struct in_addr find_interface(struct in_addr client, int fd, unsigned int index)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   144
 {
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   145
   struct sockaddr_nl addr;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   146
@@ -244,6 +256,7 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   147
  
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   148
   exit(0);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   149
 }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   150
+#endif
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   151
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   152
 int main(int argc, char **argv)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   153
 { 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   154
@@ -254,7 +267,11 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   155
   struct sockaddr_in dest;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   156
   struct ifreq ifr;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   157
   int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   158
+#ifdef HAVE_SOLARIS_NETWORK
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   159
+  int nl = 0;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   160
+#else
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   161
   int nl = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   162
+#endif
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   163
 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   164
   if (argc < 4 || argc > 5)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   165
     { 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   166
@@ -267,7 +284,8 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   167
       perror("cannot create socket");
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   168
       exit(1);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   169
     }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   170
-  
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   171
+
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   172
+#if !defined(HAVE_SOLARIS_NETWORK)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   173
   /* This voodoo fakes up a packet coming from the correct interface, which really matters for 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   174
      a DHCP server */
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   175
   strcpy(ifr.ifr_name, argv[1]);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   176
@@ -276,11 +294,43 @@
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   177
       perror("cannot setup interface");
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   178
       exit(1);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   179
     }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   180
-  
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   181
+#endif
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   182
   
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   183
   lease.s_addr = inet_addr(argv[2]);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   184
+#ifdef HAVE_SOLARIS_NETWORK
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   185
+  struct ifaddrs *ifp_head, *ifp;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   186
+
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   187
+  if (getifaddrs(&ifp_head) < 0)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   188
+    {
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   189
+      perror("could not retrieve IP addresses");
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   190
+      exit(1);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   191
+    }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   192
+  for (ifp = ifp_head; ifp != NULL; ifp = ifp->ifa_next) { 
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   193
+    if (ifp->ifa_addr->sa_family != AF_INET)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   194
+      continue;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   195
+    if (strcmp(ifp->ifa_name, argv[1]) == 0 &&
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   196
+        is_same_net(lease, ((struct sockaddr_in *)ifp->ifa_addr)->sin_addr,
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   197
+	((struct sockaddr_in *)ifp->ifa_netmask)->sin_addr))
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   198
+      break;
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   199
+    }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   200
+  if (ifp == NULL) {
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   201
+    freeifaddrs(ifp_head);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   202
+    exit(0);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   203
+  }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   204
+  memcpy(&server, &((struct sockaddr_in *)ifp->ifa_addr)->sin_addr,
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   205
+	sizeof(server));
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   206
+  /* bind to the socket */
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   207
+  if (bind(fd, ifp->ifa_addr, sizeof(struct sockaddr_in)) == -1)
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   208
+    {
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   209
+      freeifaddrs(ifp_head);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   210
+      perror("cannot bind to socket");
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   211
+      exit(1);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   212
+    }
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   213
+  freeifaddrs(ifp_head);
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   214
+#else
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   215
   server = find_interface(lease, nl, if_nametoindex(argv[1]));
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   216
-  
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   217
+#endif
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   218
+
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   219
   memset(&packet, 0, sizeof(packet));
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   220
  
16d08ab96b7f 18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
diff changeset
   221
   packet.hlen = parse_hex(argv[3], packet.chaddr, DHCP_CHADDR_MAX, &mac_type);