#!/bin/bash
####################################################################
#Programme écrit par V. Verdon
#Network-in est un simulateur de réseau
#placé sous licence GNU GPL (consulter le fichier joint intitulé "licence.txt")
#version 20250430
####################################################################
TMP=/tmp/network-in
ID=$1
TAP=$2
ACTION=$3
MAC=$4
IP=$5
MASK=$6
GATEWAY=$7

case "$ACTION" in
	
	host) #Interface créée mais non configurée, configuration par l'hôte
		/usr/bin/vde_switch -d -nostdin -tap $TAP -s $TMP/vde/$ID -m 666
		/sbin/ip link set $TAP address $MAC
		/sbin/ip link set $TAP up
	;;
	
	dhcp) #Interface créée et configurée en utilisant un service DHCP dans le simulateur
		/usr/bin/vde_switch -d -nostdin -tap $TAP -s $TMP/vde/$ID -m 666
		/sbin/ip link set $TAP address $MAC
		#paramétrage de l'interface avec le client dhcp
		dhclient $TAP
		#/sbin/ip link set $TAP up
	;;
	
	static) #Interface créée et configurée en statique depuis le simulateur
		/usr/bin/vde_switch -d -nostdin -tap $TAP -s $TMP/vde/$ID -m 666
		/sbin/ip link set $TAP address $MAC
		#paramétrage éventuel de l'interface
		if [ -n "$IP" ] && [ -n "$MASK" ]
		then
			/sbin/ip a add $IP/$MASK dev $TAP
	    fi
		/sbin/ip link set $TAP up
	;;
	
	*) #Par défaut arrêt et déconfiguration de l'interface
		#PID=$(lsof -Fp $TMP/vde/$ID/ctl)
	    #PID=${PID##p}
	    #/bin/kill $PID
	    /sbin/ip link set $TAP down
		/sbin/ip a flush dev $TAP
		#/sbin/ip link delete $TAP
		pkill -f "dhclient $TAP"
	;;
	
esac
