Statistics
| Branch: | Tag: | Revision:

root / contrib / patches / nfdhcpd-patch-feca7bb959 @ 2e1e6844

History | View | Annotate | Download (2.2 kB)

1 5af4e70c Vangelis Koukis
diff --git a/nfdhcpd b/nfdhcpd
2 5af4e70c Vangelis Koukis
index c3bdcc7..19e8d6c 100755
3 5af4e70c Vangelis Koukis
--- a/nfdhcpd
4 5af4e70c Vangelis Koukis
+++ b/nfdhcpd
5 5af4e70c Vangelis Koukis
@@ -1,4 +1,4 @@
6 5af4e70c Vangelis Koukis
-#!/usr/bin/env python
7 5af4e70c Vangelis Koukis
+#!/usr/bin/env python2.7
8 5af4e70c Vangelis Koukis
 #
9 5af4e70c Vangelis Koukis
 
10 5af4e70c Vangelis Koukis
 # nfdcpd: A promiscuous, NFQUEUE-based DHCP server for virtual machine hosting
11 5af4e70c Vangelis Koukis
@@ -496,7 +496,9 @@ class VMNetProxy(object): # pylint: disable=R0902
12 5af4e70c Vangelis Koukis
         """ Generate a reply to a BOOTP/DHCP request
13 5af4e70c Vangelis Koukis
 
14 5af4e70c Vangelis Koukis
         """
15 5af4e70c Vangelis Koukis
-        indev = payload.get_indev()
16 5af4e70c Vangelis Koukis
+        # If the packet comes from a bridged interface, use the ifindex
17 5af4e70c Vangelis Koukis
+        # of the physical device instead of the ifindex of the bridge interface
18 5af4e70c Vangelis Koukis
+        indev = payload.get_physindev() or payload.get_indev()
19 5af4e70c Vangelis Koukis
         try:
20 5af4e70c Vangelis Koukis
             # Get the actual interface from the ifindex
21 5af4e70c Vangelis Koukis
             iface = self.ifaces[indev]
22 5af4e70c Vangelis Koukis
@@ -537,7 +539,7 @@ class VMNetProxy(object): # pylint: disable=R0902
23 5af4e70c Vangelis Koukis
             return
24 5af4e70c Vangelis Koukis
 
25 5af4e70c Vangelis Koukis
         resp = Ether(dst=mac, src=self.get_iface_hw_addr(iface))/\
26 5af4e70c Vangelis Koukis
-               IP(src=DHCP_DUMMY_SERVER_IP, dst=binding.ip)/\
27 5af4e70c Vangelis Koukis
+               IP(src=self.dhcp_server_ip, dst=binding.ip)/\
28 5af4e70c Vangelis Koukis
                UDP(sport=pkt.dport, dport=pkt.sport)/resp
29 5af4e70c Vangelis Koukis
         subnet = self.subnets[binding.link]
30 5af4e70c Vangelis Koukis
 
31 5af4e70c Vangelis Koukis
@@ -593,7 +595,7 @@ class VMNetProxy(object): # pylint: disable=R0902
32 5af4e70c Vangelis Koukis
         # Finally, always add the server identifier and end options
33 5af4e70c Vangelis Koukis
         dhcp_options += [
34 5af4e70c Vangelis Koukis
             ("message-type", resp_type),
35 5af4e70c Vangelis Koukis
-            ("server_id", DHCP_DUMMY_SERVER_IP),
36 5af4e70c Vangelis Koukis
+            ("server_id", self.dhcp_server_ip),
37 5af4e70c Vangelis Koukis
             "end"
38 5af4e70c Vangelis Koukis
         ]
39 5af4e70c Vangelis Koukis
         resp /= DHCP(options=dhcp_options)
40 5af4e70c Vangelis Koukis
@@ -606,7 +608,7 @@ class VMNetProxy(object): # pylint: disable=R0902
41 5af4e70c Vangelis Koukis
         """ Generate a reply to a BOOTP/DHCP request
42 5af4e70c Vangelis Koukis
 
43 5af4e70c Vangelis Koukis
         """
44 5af4e70c Vangelis Koukis
-        indev = payload.get_indev()
45 5af4e70c Vangelis Koukis
+        indev = payload.get_physindev() or payload.get_indev()
46 5af4e70c Vangelis Koukis
         try:
47 5af4e70c Vangelis Koukis
             # Get the actual interface from the ifindex
48 5af4e70c Vangelis Koukis
             iface = self.ifaces[indev]
49 5af4e70c Vangelis Koukis
@@ -641,7 +643,7 @@ class VMNetProxy(object): # pylint: disable=R0902
50 5af4e70c Vangelis Koukis
         """ Generate a reply to an ICMPv6 neighbor solicitation
51 5af4e70c Vangelis Koukis
 
52 5af4e70c Vangelis Koukis
         """
53 5af4e70c Vangelis Koukis
-        indev = payload.get_indev()
54 5af4e70c Vangelis Koukis
+        indev = payload.get_physindev() or payload.get_indev()
55 5af4e70c Vangelis Koukis
         try:
56 5af4e70c Vangelis Koukis
             # Get the actual interface from the ifindex
57 5af4e70c Vangelis Koukis
             iface = self.ifaces[indev]