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