#!/bin/bash

if [ -z "$2" ]; then
  echo "Usage: $0 ethX vlan#"
  echo "Example: $0 eth0 16"
  exit
fi

die() {
  echo "$@"
  exit 1
}

cfgtest() {
  if [ -e "$1" ]; then
    echo "Configuration already exists. Please remove"
    echo "$1"
    echo "if you want to reconfigure vlan."
    exit 2
  fi
}

echo $1 | egrep -q '^(eth|eno|em|en[ops][0-9sf]+|p[0-9]p|team|lan|wan)[0-9]+$' || die "Wrong eth format: $1"
echo $2 | egrep -q '^[0-9]+$' || die "Wrong vlan number: $2"

cfgtest "/etc/sysconfig/network-scripts/ifcfg-$1.$2"
cfgtest "/etc/sysconfig/network-scripts/ifcfg-vlan$2"

cat > /etc/sysconfig/network-scripts/ifcfg-$1.$2 << EOF
TYPE=Vlan
NAME=$1.$2
DEVICE=$1.$2
ONBOOT=yes
VLAN=yes
VLAN_ID=$2
PHYSDEV=$1
BRIDGE=vlan$2
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-vlan$2 << EOF
DEVICE=vlan$2
TYPE=Bridge
NAME=vlan$2
BOOTPROTO=none
ONBOOT=yes
DELAY=5
STP=yes
EOF

# Restart NetworkManager, if present
systemctl is-active --quiet NetworkManager && systemctl restart NetworkManager

/sbin/ifup $1.$2 && /sbin/ifup vlan$2 && echo "Vlan configuration done."
