summaryrefslogtreecommitdiff
path: root/templates/interfaces/vxlan/node.def
blob: 780ef8d82374ad422e73fb4a6c6d95ce4765505e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
tag:
priority: 460
type: txt
help: Virtual eXtensible LAN interface
val_help: <vxlanN>; VXLAN interface name
syntax:expression: pattern $VAR(@) "vxlan[0-9]+$"

commit:expression: $VAR(./group/) != "";	\
		   "Must configure vxlan group for $VAR(@)"
commit:expression: $VAR(./vni/) != "";			\
		   "Must configure vxlan vni for $VAR(@)"

begin:
  [ -d /sys/module/vxlan ] || sudo modprobe vxlan


create:
  if [ -e /sys/class/net/$VAR(@) ]; then
    echo "VXLAN interface \"$VAR(@)\" already exists."
    exit 1
  fi

  VXLAN_VNI="id $VAR(./vni/@)"
  VXLAN_GROUP="group $VAR(./group/@)"
  VXLAN_TTL="ttl 16"

  if [ ! $VAR(./link/) == "" ]; then
    VXLAN_DEV="dev $VAR(./link/@)"
  fi

  ip link add name $VAR(@) type vxlan 	\
	$VXLAN_VNI $VXLAN_GROUP $VXLAN_TTL $VXLAN_DEV
  ip link set $VAR(@) up

  touch /tmp/vxlan-$VAR(@)-create


delete:
  if [ ! -e /sys/class/net/$VAR(@) ]; then
    echo "VXLAN interface \"$VAR(@)\" does not exist."
  else
    ip link del dev $VAR(@)
  fi


end:
  if [ -e /tmp/vxlan-$VAR(@)-create ]; then
    rm /tmp/vxlan-$VAR(@)-create
  fi