diff --git a/src/switch/cmd/ned-server/main.go b/src/switch/cmd/ned-server/main.go
index 8ebb070f6c9b4343435a29ad35c2fbe825b94454..e1626f51b18b9442fdd9451d8abab23ef482f96a 100644
--- a/src/switch/cmd/ned-server/main.go
+++ b/src/switch/cmd/ned-server/main.go
@@ -49,8 +49,7 @@ func main() {
 
 	fmt.Println("Initializing switch, connected to controller: ", settings.ControllerIP)
 
-	nedBridgeName, _ := utils.GenerateBridgeName(settings.NedName)
-	bridge, err := inits.InitializeSwitch(nedBridgeName, settings.ControllerIP)
+	bridge, err := inits.InitializeSwitch(settings.NedName, settings.ControllerIP)
 	if err != nil {
 		log.Fatalf("error initializing ned: %v", err)
 	}
@@ -112,6 +111,12 @@ func (s *server) AttachInterface(ctx context.Context, req *nedpb.AttachInterface
 
 	// Create a new interface and attach it to the bridge
 	newPort, err := AddInterfaceToBridge(interfaceName)
+	if err != nil {
+		return nil, fmt.Errorf("failed to create interface: %v", err)
+	}
+
+	err = s.Bridge.AddPort(newPort)
+
 	if err != nil {
 		return nil, fmt.Errorf("failed to add interface to bridge: %v", err)
 	}
@@ -137,14 +142,13 @@ func (s *server) AttachInterface(ctx context.Context, req *nedpb.AttachInterface
 func AddInterfaceToBridge(bridgeName string) (string, error) {
 	// Generate unique interface names
 	timestamp := time.Now().UnixNano()
-	vethName := fmt.Sprintf("veth%d", timestamp)
-	peerName := fmt.Sprintf("vpeer%d", timestamp)
+	vethName, _ := utils.GenerateInterfaceName("veth", fmt.Sprintf("%s%d", bridgeName, timestamp))
+	peerName, _ := utils.GenerateInterfaceName("vpeer", fmt.Sprintf("%s%d", bridgeName, timestamp))
 
 	// Create the veth pair
 	if err := exec.Command("ip", "link", "add", vethName, "type", "veth", "peer", "name", peerName).Run(); err != nil {
 		return "", fmt.Errorf("failed to create veth pair: %v", err)
 	}
-
 	// Set both interfaces up
 	if err := exec.Command("ip", "link", "set", vethName, "up").Run(); err != nil {
 		return "", fmt.Errorf("failed to set %s up: %v", vethName, err)
@@ -153,12 +157,11 @@ func AddInterfaceToBridge(bridgeName string) (string, error) {
 		return "", fmt.Errorf("failed to set %s up: %v", peerName, err)
 	}
 
-	// Add one end to the Linux bridge
-	if err := exec.Command("ip", "link", "set", vethName, "master", bridgeName).Run(); err != nil {
-		return "", fmt.Errorf("failed to add %s to bridge %s: %v", vethName, bridgeName, err)
+	if err := exec.Command("ip", "link", "set", peerName, "master", bridgeName).Run(); err != nil {
+		return "", fmt.Errorf("failed to add %s to bridge %s: %v", peerName, bridgeName, err)
 	}
 
-	return peerName, nil
+	return vethName, nil
 }
 
 func takeArguments() (string, string, error) {
diff --git a/src/switch/pkg/utils/utils.go b/src/switch/pkg/utils/utils.go
index f897b0e968cdcd3819d7d0a4bf94b0be20b1a55d..d80daee0fa243990e41d251f64cb0a1a859a0a58 100644
--- a/src/switch/pkg/utils/utils.go
+++ b/src/switch/pkg/utils/utils.go
@@ -6,7 +6,7 @@ import (
 	"fmt"
 )
 
-func GenerateBridgeName(uniqueIdentifier string) (string, error) {
+func GenerateInterfaceName(prefix, uniqueIdentifier string) (string, error) {
 	// Create a SHA-256 hash of the input string
 	hash := sha256.New()
 	_, err := hash.Write([]byte(uniqueIdentifier))
@@ -20,5 +20,5 @@ func GenerateBridgeName(uniqueIdentifier string) (string, error) {
 	digestedName := fullHash[:5]
 
 	// Return the formatted bridge name
-	return fmt.Sprintf("br-%s", digestedName), nil
+	return fmt.Sprintf("%s%s", prefix, digestedName), nil
 }