Add support of VLAN to vfioveth CNI

Change-Id: Iec463f6fcfcc4fdf4aea86715e36d827dccb8678
diff --git a/VERSION b/VERSION
index 781dcb0..65087b4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.1.3
+1.1.4
diff --git a/vfioveth b/vfioveth
old mode 100755
new mode 100644
index c84165d..029e633
--- a/vfioveth
+++ b/vfioveth
@@ -22,6 +22,18 @@
 	echo $mac
 }
 
+add_vlan() {
+	vfpci=$(echo $CNI_CONF | jq -r '.deviceID')
+        local pf=$(readlink /sys/devices/pci*/*/$vfpci/physfn | awk '{print substr($1,4)}')
+        local pfName=$(ls /sys/devices/pci*/*/$pf/net/ | head -1)
+        local idx=$(ls -l /sys/devices/pci*/*/$pf | awk -v vf=$vfpci 'substr($11,4)==vf {print substr($9,7)}')
+
+        vlan=$(echo $CNI_CONF | jq -r '.vlan // empty')
+        if [ ! -z "$vlan" ]; then
+	        ip link set $pfName vf $idx vlan $vlan
+        fi
+}
+
 ipam() {
 	local plugin=$(echo $CNI_CONF | jq -r '.ipam.type')
 	local res=$(echo $"$CNI_CONF" | "$plugin" | jq -c '.')
@@ -50,17 +62,31 @@
 	ip netns exec $CNI_CONTAINERID ip link del $CNI_IFNAME
 }
 
+delete_vlan() {
+	vfpci=$(echo $CNI_CONF | jq -r '.deviceID')
+        local pf=$(readlink /sys/devices/pci*/*/$vfpci/physfn | awk '{print substr($1,4)}')
+        local pfName=$(ls /sys/devices/pci*/*/$pf/net/ | head -1)
+        local idx=$(ls -l /sys/devices/pci*/*/$pf | awk -v vf=$vfpci 'substr($11,4)==vf {print substr($9,7)}')
+
+        vlan=$(echo $CNI_CONF | jq -r '.vlan // empty')
+        if [ ! -z "$vlan" ]; then
+                ip link set $pfName vf $idx vlan 0
+        fi
+}
+
 case $CNI_COMMAND in
 ADD)
 	res=$(ipam)
 	ip=$(echo $res | jq -r '.ips[0].address')
 	add_pair_ns $ip
+	add_vlan
 	echo '{"cniVersion":"0.3.1"}' | jq -c --arg ip $ip '.ips[0].address = $ip' >&3
 	;;
 DEL)
 	set +o errexit
 	ipam
 	delete_pair_ns
+	delete_vlan
 	set -o errexit
 	;;
 *)