Add nice debug messages for nfdhcpd clients
[snf-nfdhcpd] / kvm-vif-bridge
1 #!/bin/bash
2
3 # Bring the interface up (but without an IP)
4
5 if [ "$MODE" == "routed" ]; then
6         ip link set $INTERFACE addr cc:47:52:4e:45:54
7         ifconfig $INTERFACE 0.0.0.0 up
8         # Add routing table entries
9         while ip rule del dev $INTERFACE; do :; done
10         ip rule add dev $INTERFACE table $LINK
11         ip route replace $IP table $LINK proto static dev $INTERFACE
12
13         # Enable proxy ARP/NDP
14         echo 1 > /proc/sys/net/ipv4/conf/$INTERFACE/proxy_arp
15         echo 0 > /proc/sys/net/ipv6/conf/$INTERFACE/proxy_ndp
16
17         # Add a routing entry for the eui-64
18         prefix=$(ip -6 route list table $LINK | grep -m 1 "/64" | awk '{ print $1 }')
19         uplink=$(ip -6 route list table $LINK | grep -m 1 default | sed 's/.* dev \([^ ]\+\).*/\1/')
20         eui64=$(mac2eui64 $MAC $prefix)
21
22         while ip -6 rule del dev $INTERFACE; do :; done
23         ip -6 rule add dev $INTERFACE table $LINK
24         ip -6 ro replace $eui64/128 dev $INTERFACE table $LINK
25         ip -6 neigh add proxy $eui64 dev $uplink
26         
27         # Drop unicast BOOTP/DHCP packets
28         iptables -D FORWARD -i $INTERFACE -p udp --dport 67 -j DROP 2>/dev/null
29         iptables -A FORWARD -i $INTERFACE -p udp --dport 67 -j DROP
30
31         # Generate the client configuration
32         cat >/var/lib/nfdhcpd/$INTERFACE <<EOF
33 IP=$IP
34 MAC=$MAC
35 LINK=$LINK
36 HOSTNAME=$INSTANCE
37 TAGS=$TAGS
38 EOF
39 else
40         ifconfig $INTERFACE 0.0.0.0 up
41         # Add the interface to the bridge
42         brctl addif $BRIDGE $INTERFACE
43         if [ -f "/var/run/nfdhcpd/$INTERFACE" ]; then
44                 rm /var/run/nfdhcpd/$INTERFACE
45         fi
46 fi