VOL-1119 BBSim - DHCP emulation

Change-Id: Iaa1a046715c7de99297246b4842784ef16c57acb
diff --git a/setup/setup_env.go b/setup/setup_env.go
index a4210f5..c391875 100644
--- a/setup/setup_env.go
+++ b/setup/setup_env.go
@@ -37,6 +37,15 @@
 	return nil
 }
 
+func ActivateDHCPClients(vethnames []string) error {
+	for _, vethname := range vethnames {
+		if err := activateDHCPClient(vethname); err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
 func KillAllWPASups() error {
 	err := exec.Command("pkill", "wpa_supplicant").Run()
 	if err != nil {
@@ -107,4 +116,33 @@
 	}
 	log.Printf("activateWPASupplicant() for :%s\n", vethname)
 	return
-}
\ No newline at end of file
+}
+
+func activateDHCPClient(vethname string) (err error) {
+	cmd := "/usr/local/bin/dhclient"
+	err = exec.Command(cmd, vethname).Start()
+	if err != nil {
+		log.Printf("[ERROR] Faile to activateWPASupplicant() for :%s %v\n", vethname, err)
+		return
+	}
+	log.Printf("activateDHCPClient()\n", vethname)
+	return
+}
+
+func ActivateDHCPServer(veth string, serverip string) {
+	cmd := "/sbin/ifconfig"
+	err := exec.Command(cmd, veth, serverip, "up").Run()
+	if err != nil {
+		log.Printf("[ERROR] Fail to up %s()\n", veth, err)
+		return
+	}
+	cmd = "/usr/local/bin/dhcpd"
+	conf := "/etc/dhcp/dhcpd.conf"
+	err = exec.Command(cmd, "-cf", conf, veth).Run()
+	if err != nil {
+		log.Printf("[ERROR] Fail to activateDHCP Server ()\n", err)
+		return
+	}
+	log.Printf("Activate DHCP Server()\n")
+	return
+}