components/dnsmasq/patches/02_compile_dhcp_release.patch
author david.comay@oracle.com
Thu, 10 Jul 2014 13:27:03 -0700
branchs11-update
changeset 3200 16d08ab96b7f
child 6746 5a7cd15a88f8
permissions -rw-r--r--
18686478 kstat warning every minute in nova-compute log on SPARC 19061438 checkboxes related with 'create volume from Image' in the Horizon don't work 19064962 power state mapping for incomplete zone is incorrect 19065445 Horizon doesn't deal well with shutdown zones 19130253 pausing/suspension "successful" in horizon, though nothing happens 19136473 ZFSSA iSCSI Cinder Attach Volume Failed 19146728 missing an upstream utility 'dhcp_release' needed by instance termination 19148389 jsonpointer package missing as a dependency for jsonpatch 19158668 associating a new floating ip removes existing ipnat rules and re-adds them 19161623 problem in SERVICE/KEYSTONE 19166348 cinder & nova should default signing_dir explicitly for consistency 19166359 minor pkgfmt(1) issues with OpenStack manifests 19168609 System Info page doesn't work properly 19173435 problem in SERVICE/HORIZON 19181971 OpenStack pkg.summaries should include service type
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);