MCPcopy Index your code
hub / github.com/coder/coder / prepareSTUNServer

Function prepareSTUNServer

tailnet/test/integration/network.go:766–816  ·  view source on GitHub ↗

prepareSTUNServer creates a STUN server networking spec in a network namespace and joins it to the bridge. It also sets up the DERP map for the clients to use the STUN.

(t *testing.T, internet *fakeInternet, number int)

Source from the content-addressed store, hash-verified

764// namespace and joins it to the bridge. It also sets up the DERP map for the
765// clients to use the STUN.
766func prepareSTUNServer(t *testing.T, internet *fakeInternet, number int) TestNetworkingSTUN {
767 name := fmt.Sprintf("stn%d", number)
768
769 stunNetNS := createNetNS(t, internet.NamePrefix+name)
770 stun := TestNetworkingSTUN{
771 Process: TestNetworkingProcess{
772 NetNS: stunNetNS,
773 },
774 }
775
776 stun.IP = "10.0.0." + fmt.Sprint(64+number)
777 err := joinBridge(joinBridgeOpts{
778 bridgeNetNS: internet.BridgeNetNS,
779 netNS: stunNetNS,
780 bridgeName: internet.BridgeName,
781 vethPair: vethPair{
782 Outer: internet.NamePrefix + "b-" + name,
783 Inner: internet.NamePrefix + name + "-b",
784 },
785 ip: stun.IP,
786 })
787 require.NoError(t, err, "join bridge with STUN server")
788 stun.ListenAddr = stun.IP + ":3478"
789
790 // Define custom DERP map.
791 stunRegion := &tailcfg.DERPRegion{
792 RegionID: 10000 + number,
793 RegionCode: name,
794 RegionName: name,
795 Nodes: []*tailcfg.DERPNode{
796 {
797 Name: name + "a",
798 RegionID: 1,
799 IPv4: stun.IP,
800 IPv6: "none",
801 STUNPort: 3478,
802 STUNOnly: true,
803 },
804 },
805 }
806 client1DERP, err := internet.Net.Client1.ResolveDERPMap()
807 require.NoError(t, err, "resolve DERP map for client 1")
808 client1DERP.Regions[stunRegion.RegionID] = stunRegion
809 internet.Net.Client1.DERPMap = client1DERP
810 client2DERP, err := internet.Net.Client2.ResolveDERPMap()
811 require.NoError(t, err, "resolve DERP map for client 2")
812 client2DERP.Regions[stunRegion.RegionID] = stunRegion
813 internet.Net.Client2.DERPMap = client2DERP
814
815 return stun
816}
817
818func iptablesMasqueradeNonUDP(t *testing.T, netNS *os.File) {
819 t.Helper()

Callers 1

SetupNetworkingMethod · 0.85

Calls 3

createNetNSFunction · 0.85
joinBridgeFunction · 0.85
ResolveDERPMapMethod · 0.80

Tested by

no test coverage detected