diff --git a/cmd/wg-mesh/main.go b/cmd/wg-mesh/main.go index 79644e9..0860c91 100644 --- a/cmd/wg-mesh/main.go +++ b/cmd/wg-mesh/main.go @@ -20,7 +20,6 @@ func createNewMesh(client *ipcRpc.Client) string { return err.Error() } - joinMesh(client, reply, "localhost") return reply } diff --git a/cmd/wgmeshd/main.go b/cmd/wgmeshd/main.go index 4a5b491..b4f57b7 100644 --- a/cmd/wgmeshd/main.go +++ b/cmd/wgmeshd/main.go @@ -29,4 +29,6 @@ func main() { if err := grpc.Serve(lis); err != nil { fmt.Print(err.Error()) } + + defer wgClient.Close() } diff --git a/pkg/ctrlserver/ctrlserver.go b/pkg/ctrlserver/ctrlserver.go index de62923..93a2a93 100644 --- a/pkg/ctrlserver/ctrlserver.go +++ b/pkg/ctrlserver/ctrlserver.go @@ -77,10 +77,10 @@ func (server *MeshCtrlServer) AddHost(args AddHostArgs) error { WgHost: "10.0.0." + strconv.Itoa(rand.Intn(253)+1) + "/32", } - err := addWgPeer(server.IfName, server.Client, node) + err := AddWgPeer(server.IfName, server.Client, node) if err == nil { - nodes.Nodes[args.MeshId] = node + nodes.Nodes[args.HostEndpoint] = node } else { fmt.Println(err.Error()) } @@ -98,7 +98,7 @@ func (server *MeshCtrlServer) GetDevice() *wgtypes.Device { return dev } -func addWgPeer(ifName string, client *wgctrl.Client, node MeshNode) error { +func AddWgPeer(ifName string, client *wgctrl.Client, node MeshNode) error { peer := make([]wgtypes.PeerConfig, 1) peerPublic, err := wgtypes.ParseKey(node.PublicKey) @@ -135,9 +135,13 @@ func addWgPeer(ifName string, client *wgctrl.Client, node MeshNode) error { err = client.ConfigureDevice(ifName, cfg) - dev, _ := client.Device(ifName) + if err != nil { + fmt.Println(err.Error()) + } - fmt.Println(dev.Peers[0].Endpoint) + dev, err := client.Device(ifName) + + fmt.Println("Number of peers: " + strconv.Itoa(len(dev.Peers))) if err != nil { return err diff --git a/pkg/ctrlserver/ipc/ipchandler.go b/pkg/ctrlserver/ipc/ipchandler.go index b3895a3..5b80f21 100644 --- a/pkg/ctrlserver/ipc/ipchandler.go +++ b/pkg/ctrlserver/ipc/ipchandler.go @@ -16,6 +16,7 @@ import ( "github.com/tim-beatham/wgmesh/pkg/ipc" ipctypes "github.com/tim-beatham/wgmesh/pkg/ipc" "github.com/tim-beatham/wgmesh/pkg/wg" + "golang.zx2c4.com/wireguard/wgctrl/wgtypes" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" ) @@ -26,6 +27,19 @@ type Mesh struct { Server *ctrlserver.MeshCtrlServer } +// Get preferred outbound ip of this machine +func GetOutboundIP() (*net.UDPAddr, error) { + conn, err := net.Dial("udp", "8.8.8.8:80") + if err != nil { + return nil, err + } + defer conn.Close() + + localAddr := conn.LocalAddr().(*net.UDPAddr) + + return localAddr, nil +} + /* * Create a new WireGuard mesh network */ @@ -48,6 +62,59 @@ func (n Mesh) ListMeshes(name *string, reply *map[string]ctrlserver.Mesh) error return nil } +func updateMesh(n *Mesh, meshId string, endPoint string) error { + conn, err := grpc.Dial(endPoint, grpc.WithTransportCredentials(insecure.NewCredentials())) + + if err != nil { + return err + } + + defer conn.Close() + c := rpc.NewMeshCtrlServerClient(conn) + + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + + getMeshReq := rpc.GetMeshRequest{ + MeshId: meshId, + } + + r, err := c.GetMesh(ctx, &getMeshReq) + + if err != nil { + return err + } + + key, err := wgtypes.ParseKey(meshId) + if err != nil { + return err + } + + mesh := new(ctrlserver.Mesh) + mesh.Nodes = make(map[string]ctrlserver.MeshNode) + mesh.SharedKey = &key + n.Server.Meshes[meshId] = *mesh + + for _, node := range r.GetMeshNode() { + meshNode := ctrlserver.MeshNode{ + PublicKey: node.PublicKey, + HostEndpoint: node.Endpoint, + WgEndpoint: node.WgEndpoint, + WgHost: node.WgHost, + } + + n.Server.Meshes[meshId].Nodes[node.Endpoint] = meshNode + + ctrlserver.AddWgPeer(n.Server.IfName, n.Server.Client, meshNode) + } + + cfg := wgtypes.Config{} + + n.Server.Client.ConfigureDevice(n.Server.IfName) + + return nil +} + func (n Mesh) JoinMesh(args *ipctypes.JoinMeshArgs, reply *string) error { conn, err := grpc.Dial(args.IpAdress+":8080", grpc.WithTransportCredentials(insecure.NewCredentials())) @@ -77,6 +144,10 @@ func (n Mesh) JoinMesh(args *ipctypes.JoinMeshArgs, reply *string) error { return err } + if r.GetSuccess() { + updateMesh(&n, args.MeshId, args.IpAdress+":8080") + } + *reply = strconv.FormatBool(r.GetSuccess()) return nil } diff --git a/pkg/ctrlserver/rpc/ctrlserver.pb.go b/pkg/ctrlserver/rpc/ctrlserver.pb.go index 7e92673..6750e1a 100644 --- a/pkg/ctrlserver/rpc/ctrlserver.pb.go +++ b/pkg/ctrlserver/rpc/ctrlserver.pb.go @@ -28,6 +28,7 @@ type MeshNode struct { PublicKey string `protobuf:"bytes,1,opt,name=publicKey,proto3" json:"publicKey,omitempty"` WgEndpoint string `protobuf:"bytes,2,opt,name=wgEndpoint,proto3" json:"wgEndpoint,omitempty"` Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + WgHost string `protobuf:"bytes,4,opt,name=wgHost,proto3" json:"wgHost,omitempty"` } func (x *MeshNode) Reset() { @@ -83,6 +84,13 @@ func (x *MeshNode) GetEndpoint() string { return "" } +func (x *MeshNode) GetWgHost() string { + if x != nil { + return x.WgHost + } + return "" +} + type GetMeshRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -317,45 +325,47 @@ var file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDesc = []byte{ 0x0a, 0x24, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x74, 0x72, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x63, 0x74, 0x72, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x22, 0x64, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x22, 0x7c, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x67, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x67, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x28, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, - 0x22, 0x56, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x67, 0x48, 0x6f, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x22, 0x28, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x68, - 0x4e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, - 0x6d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x7b, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, - 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x65, 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x73, - 0x68, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, - 0x06, 0x77, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, - 0x67, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x51, 0x0a, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, - 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x70, 0x32, 0x91, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x73, - 0x68, 0x43, 0x74, 0x72, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x07, 0x47, - 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, - 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x08, 0x4a, 0x6f, - 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x6f, 0x69, - 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x14, 0x5a, 0x12, - 0x70, 0x6b, 0x67, 0x2f, 0x63, 0x74, 0x72, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, - 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, + 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, + 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, + 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, + 0x22, 0x7b, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x51, 0x0a, + 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, + 0x49, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, + 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x70, + 0x32, 0x91, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x74, 0x72, 0x6c, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x18, + 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x12, 0x40, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x19, + 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x00, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x63, 0x74, 0x72, 0x6c, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/pkg/ctrlserver/rpc/rpchandler.go b/pkg/ctrlserver/rpc/rpchandler.go index c667f04..c465233 100644 --- a/pkg/ctrlserver/rpc/rpchandler.go +++ b/pkg/ctrlserver/rpc/rpchandler.go @@ -21,6 +21,7 @@ func nodeToRpcNode(node ctrlserver.MeshNode) *MeshNode { return &MeshNode{ PublicKey: node.PublicKey, WgEndpoint: node.WgEndpoint, + WgHost: node.WgHost, Endpoint: node.HostEndpoint, } } diff --git a/pkg/grpc/ctrlserver/ctrlserver.pb.go b/pkg/grpc/ctrlserver/ctrlserver.pb.go new file mode 100644 index 0000000..6750e1a --- /dev/null +++ b/pkg/grpc/ctrlserver/ctrlserver.pb.go @@ -0,0 +1,490 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: pkg/grpc/ctrlserver/ctrlserver.proto + +package rpc + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MeshNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PublicKey string `protobuf:"bytes,1,opt,name=publicKey,proto3" json:"publicKey,omitempty"` + WgEndpoint string `protobuf:"bytes,2,opt,name=wgEndpoint,proto3" json:"wgEndpoint,omitempty"` + Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + WgHost string `protobuf:"bytes,4,opt,name=wgHost,proto3" json:"wgHost,omitempty"` +} + +func (x *MeshNode) Reset() { + *x = MeshNode{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MeshNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MeshNode) ProtoMessage() {} + +func (x *MeshNode) ProtoReflect() protoreflect.Message { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MeshNode.ProtoReflect.Descriptor instead. +func (*MeshNode) Descriptor() ([]byte, []int) { + return file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescGZIP(), []int{0} +} + +func (x *MeshNode) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +func (x *MeshNode) GetWgEndpoint() string { + if x != nil { + return x.WgEndpoint + } + return "" +} + +func (x *MeshNode) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *MeshNode) GetWgHost() string { + if x != nil { + return x.WgHost + } + return "" +} + +type GetMeshRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MeshId string `protobuf:"bytes,1,opt,name=meshId,proto3" json:"meshId,omitempty"` +} + +func (x *GetMeshRequest) Reset() { + *x = GetMeshRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMeshRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMeshRequest) ProtoMessage() {} + +func (x *GetMeshRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMeshRequest.ProtoReflect.Descriptor instead. +func (*GetMeshRequest) Descriptor() ([]byte, []int) { + return file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescGZIP(), []int{1} +} + +func (x *GetMeshRequest) GetMeshId() string { + if x != nil { + return x.MeshId + } + return "" +} + +type GetMeshReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MeshId string `protobuf:"bytes,1,opt,name=meshId,proto3" json:"meshId,omitempty"` + MeshNode []*MeshNode `protobuf:"bytes,2,rep,name=meshNode,proto3" json:"meshNode,omitempty"` +} + +func (x *GetMeshReply) Reset() { + *x = GetMeshReply{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMeshReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMeshReply) ProtoMessage() {} + +func (x *GetMeshReply) ProtoReflect() protoreflect.Message { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMeshReply.ProtoReflect.Descriptor instead. +func (*GetMeshReply) Descriptor() ([]byte, []int) { + return file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescGZIP(), []int{2} +} + +func (x *GetMeshReply) GetMeshId() string { + if x != nil { + return x.MeshId + } + return "" +} + +func (x *GetMeshReply) GetMeshNode() []*MeshNode { + if x != nil { + return x.MeshNode + } + return nil +} + +type JoinMeshRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MeshId string `protobuf:"bytes,1,opt,name=meshId,proto3" json:"meshId,omitempty"` + HostPort int32 `protobuf:"varint,2,opt,name=hostPort,proto3" json:"hostPort,omitempty"` + PublicKey string `protobuf:"bytes,3,opt,name=publicKey,proto3" json:"publicKey,omitempty"` + WgPort int32 `protobuf:"varint,4,opt,name=wgPort,proto3" json:"wgPort,omitempty"` +} + +func (x *JoinMeshRequest) Reset() { + *x = JoinMeshRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *JoinMeshRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JoinMeshRequest) ProtoMessage() {} + +func (x *JoinMeshRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JoinMeshRequest.ProtoReflect.Descriptor instead. +func (*JoinMeshRequest) Descriptor() ([]byte, []int) { + return file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescGZIP(), []int{3} +} + +func (x *JoinMeshRequest) GetMeshId() string { + if x != nil { + return x.MeshId + } + return "" +} + +func (x *JoinMeshRequest) GetHostPort() int32 { + if x != nil { + return x.HostPort + } + return 0 +} + +func (x *JoinMeshRequest) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +func (x *JoinMeshRequest) GetWgPort() int32 { + if x != nil { + return x.WgPort + } + return 0 +} + +type JoinMeshReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + MeshIp *string `protobuf:"bytes,2,opt,name=meshIp,proto3,oneof" json:"meshIp,omitempty"` +} + +func (x *JoinMeshReply) Reset() { + *x = JoinMeshReply{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *JoinMeshReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JoinMeshReply) ProtoMessage() {} + +func (x *JoinMeshReply) ProtoReflect() protoreflect.Message { + mi := &file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JoinMeshReply.ProtoReflect.Descriptor instead. +func (*JoinMeshReply) Descriptor() ([]byte, []int) { + return file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescGZIP(), []int{4} +} + +func (x *JoinMeshReply) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *JoinMeshReply) GetMeshIp() string { + if x != nil && x.MeshIp != nil { + return *x.MeshIp + } + return "" +} + +var File_pkg_grpc_ctrlserver_ctrlserver_proto protoreflect.FileDescriptor + +var file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x74, 0x72, 0x6c, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x63, 0x74, 0x72, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x22, 0x7c, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x67, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x77, 0x67, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x67, 0x48, 0x6f, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x22, 0x28, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, + 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, + 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, + 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, + 0x22, 0x7b, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x51, 0x0a, + 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x73, 0x68, + 0x49, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x65, 0x73, 0x68, + 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x70, + 0x32, 0x91, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x74, 0x72, 0x6c, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x18, + 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x12, 0x40, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x19, + 0x2e, 0x72, 0x70, 0x63, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x00, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x63, 0x74, 0x72, 0x6c, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescOnce sync.Once + file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescData = file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDesc +) + +func file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescGZIP() []byte { + file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescOnce.Do(func() { + file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescData) + }) + return file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDescData +} + +var file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_pkg_grpc_ctrlserver_ctrlserver_proto_goTypes = []interface{}{ + (*MeshNode)(nil), // 0: rpctypes.MeshNode + (*GetMeshRequest)(nil), // 1: rpctypes.GetMeshRequest + (*GetMeshReply)(nil), // 2: rpctypes.GetMeshReply + (*JoinMeshRequest)(nil), // 3: rpctypes.JoinMeshRequest + (*JoinMeshReply)(nil), // 4: rpctypes.JoinMeshReply +} +var file_pkg_grpc_ctrlserver_ctrlserver_proto_depIdxs = []int32{ + 0, // 0: rpctypes.GetMeshReply.meshNode:type_name -> rpctypes.MeshNode + 1, // 1: rpctypes.MeshCtrlServer.GetMesh:input_type -> rpctypes.GetMeshRequest + 3, // 2: rpctypes.MeshCtrlServer.JoinMesh:input_type -> rpctypes.JoinMeshRequest + 2, // 3: rpctypes.MeshCtrlServer.GetMesh:output_type -> rpctypes.GetMeshReply + 4, // 4: rpctypes.MeshCtrlServer.JoinMesh:output_type -> rpctypes.JoinMeshReply + 3, // [3:5] is the sub-list for method output_type + 1, // [1:3] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_pkg_grpc_ctrlserver_ctrlserver_proto_init() } +func file_pkg_grpc_ctrlserver_ctrlserver_proto_init() { + if File_pkg_grpc_ctrlserver_ctrlserver_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MeshNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMeshRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMeshReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinMeshRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinMeshReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes[4].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_pkg_grpc_ctrlserver_ctrlserver_proto_goTypes, + DependencyIndexes: file_pkg_grpc_ctrlserver_ctrlserver_proto_depIdxs, + MessageInfos: file_pkg_grpc_ctrlserver_ctrlserver_proto_msgTypes, + }.Build() + File_pkg_grpc_ctrlserver_ctrlserver_proto = out.File + file_pkg_grpc_ctrlserver_ctrlserver_proto_rawDesc = nil + file_pkg_grpc_ctrlserver_ctrlserver_proto_goTypes = nil + file_pkg_grpc_ctrlserver_ctrlserver_proto_depIdxs = nil +} diff --git a/pkg/grpc/ctrlserver/ctrlserver_grpc.pb.go b/pkg/grpc/ctrlserver/ctrlserver_grpc.pb.go new file mode 100644 index 0000000..0a1f501 --- /dev/null +++ b/pkg/grpc/ctrlserver/ctrlserver_grpc.pb.go @@ -0,0 +1,141 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 +// source: pkg/grpc/ctrlserver/ctrlserver.proto + +package rpc + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// MeshCtrlServerClient is the client API for MeshCtrlServer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MeshCtrlServerClient interface { + GetMesh(ctx context.Context, in *GetMeshRequest, opts ...grpc.CallOption) (*GetMeshReply, error) + JoinMesh(ctx context.Context, in *JoinMeshRequest, opts ...grpc.CallOption) (*JoinMeshReply, error) +} + +type meshCtrlServerClient struct { + cc grpc.ClientConnInterface +} + +func NewMeshCtrlServerClient(cc grpc.ClientConnInterface) MeshCtrlServerClient { + return &meshCtrlServerClient{cc} +} + +func (c *meshCtrlServerClient) GetMesh(ctx context.Context, in *GetMeshRequest, opts ...grpc.CallOption) (*GetMeshReply, error) { + out := new(GetMeshReply) + err := c.cc.Invoke(ctx, "/rpctypes.MeshCtrlServer/GetMesh", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *meshCtrlServerClient) JoinMesh(ctx context.Context, in *JoinMeshRequest, opts ...grpc.CallOption) (*JoinMeshReply, error) { + out := new(JoinMeshReply) + err := c.cc.Invoke(ctx, "/rpctypes.MeshCtrlServer/JoinMesh", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MeshCtrlServerServer is the server API for MeshCtrlServer service. +// All implementations must embed UnimplementedMeshCtrlServerServer +// for forward compatibility +type MeshCtrlServerServer interface { + GetMesh(context.Context, *GetMeshRequest) (*GetMeshReply, error) + JoinMesh(context.Context, *JoinMeshRequest) (*JoinMeshReply, error) + mustEmbedUnimplementedMeshCtrlServerServer() +} + +// UnimplementedMeshCtrlServerServer must be embedded to have forward compatible implementations. +type UnimplementedMeshCtrlServerServer struct { +} + +func (UnimplementedMeshCtrlServerServer) GetMesh(context.Context, *GetMeshRequest) (*GetMeshReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMesh not implemented") +} +func (UnimplementedMeshCtrlServerServer) JoinMesh(context.Context, *JoinMeshRequest) (*JoinMeshReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method JoinMesh not implemented") +} +func (UnimplementedMeshCtrlServerServer) mustEmbedUnimplementedMeshCtrlServerServer() {} + +// UnsafeMeshCtrlServerServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MeshCtrlServerServer will +// result in compilation errors. +type UnsafeMeshCtrlServerServer interface { + mustEmbedUnimplementedMeshCtrlServerServer() +} + +func RegisterMeshCtrlServerServer(s grpc.ServiceRegistrar, srv MeshCtrlServerServer) { + s.RegisterService(&MeshCtrlServer_ServiceDesc, srv) +} + +func _MeshCtrlServer_GetMesh_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMeshRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MeshCtrlServerServer).GetMesh(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/rpctypes.MeshCtrlServer/GetMesh", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MeshCtrlServerServer).GetMesh(ctx, req.(*GetMeshRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MeshCtrlServer_JoinMesh_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(JoinMeshRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MeshCtrlServerServer).JoinMesh(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/rpctypes.MeshCtrlServer/JoinMesh", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MeshCtrlServerServer).JoinMesh(ctx, req.(*JoinMeshRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// MeshCtrlServer_ServiceDesc is the grpc.ServiceDesc for MeshCtrlServer service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MeshCtrlServer_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "rpctypes.MeshCtrlServer", + HandlerType: (*MeshCtrlServerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetMesh", + Handler: _MeshCtrlServer_GetMesh_Handler, + }, + { + MethodName: "JoinMesh", + Handler: _MeshCtrlServer_JoinMesh_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "pkg/grpc/ctrlserver/ctrlserver.proto", +}