From fcddaabed2c881008b7e3e20b55d2eab6ca439f1 Mon Sep 17 00:00:00 2001 From: GRMrGecko Date: Sun, 5 Jan 2025 22:22:24 -0600 Subject: [PATCH] First commit. --- .gitignore | 5 + .goreleaser.yaml | 82 ++ Dockerfile | 10 + LICENSE.txt | 19 + Makefile | 69 ++ README.md | 76 ++ config.go | 512 ++++++++++ config_cmd.go | 66 ++ config_grpc.go | 30 + devicestate_string.go | 25 + flags.go | 51 + go.mod | 59 ++ go.sum | 178 ++++ grpc.go | 77 ++ interface.go | 1154 +++++++++++++++++++++++ interface_cmd.go | 595 ++++++++++++ interface_grpc.go | 395 ++++++++ listener.go | 257 ++++++ listener_cmd.go | 164 ++++ listener_grpc.go | 97 ++ main.go | 24 + masquerade.go | 37 + promiscuous_unix.go | 23 + promiscuous_windows.go | 164 ++++ server_cmd.go | 130 +++ service_cmd.go | 77 ++ sysroot/Dockerfile | 21 + sysroot/README.md | 18 + sysroot/build.sh | 131 +++ tun/errors.go | 12 + tun/tun.go | 53 ++ tun/tun_linux.go | 562 +++++++++++ tun/tun_windows.go | 336 +++++++ update_cmd.go | 10 + updater.go | 262 ++++++ utils.go | 20 + vxlan/vxlan.pb.go | 1743 +++++++++++++++++++++++++++++++++++ vxlan/vxlan.proto | 170 ++++ vxlan/vxlan_grpc.pb.go | 1001 ++++++++++++++++++++ wintun-source.md | 7 + wintun/LICENSE.txt | 84 ++ wintun/README.md | 339 +++++++ wintun/bin/amd64/wintun.dll | Bin 0 -> 427552 bytes wintun/bin/arm/wintun.dll | Bin 0 -> 364552 bytes wintun/bin/arm64/wintun.dll | Bin 0 -> 222488 bytes wintun/bin/x86/wintun.dll | Bin 0 -> 550928 bytes wintun/include/wintun.h | 270 ++++++ 47 files changed, 9415 insertions(+) create mode 100644 .gitignore create mode 100644 .goreleaser.yaml create mode 100644 Dockerfile create mode 100644 LICENSE.txt create mode 100644 Makefile create mode 100644 README.md create mode 100644 config.go create mode 100644 config_cmd.go create mode 100644 config_grpc.go create mode 100644 devicestate_string.go create mode 100644 flags.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 grpc.go create mode 100644 interface.go create mode 100644 interface_cmd.go create mode 100644 interface_grpc.go create mode 100644 listener.go create mode 100644 listener_cmd.go create mode 100644 listener_grpc.go create mode 100644 main.go create mode 100644 masquerade.go create mode 100644 promiscuous_unix.go create mode 100644 promiscuous_windows.go create mode 100644 server_cmd.go create mode 100644 service_cmd.go create mode 100644 sysroot/Dockerfile create mode 100644 sysroot/README.md create mode 100755 sysroot/build.sh create mode 100644 tun/errors.go create mode 100644 tun/tun.go create mode 100644 tun/tun_linux.go create mode 100644 tun/tun_windows.go create mode 100644 update_cmd.go create mode 100644 updater.go create mode 100644 utils.go create mode 100644 vxlan/vxlan.pb.go create mode 100644 vxlan/vxlan.proto create mode 100644 vxlan/vxlan_grpc.pb.go create mode 100644 wintun-source.md create mode 100644 wintun/LICENSE.txt create mode 100644 wintun/README.md create mode 100644 wintun/bin/amd64/wintun.dll create mode 100644 wintun/bin/arm/wintun.dll create mode 100644 wintun/bin/arm64/wintun.dll create mode 100644 wintun/bin/x86/wintun.dll create mode 100644 wintun/include/wintun.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..394355c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.release-env +virtual-vxlan.exe +virtual-vxlan +dist +sysroot/linux* diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..33f9cfa --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,82 @@ +version: 2 + +before: + hooks: + - go mod tidy + - go get golang.org/x/tools/cmd/stringer@latest + - go generate + +builds: + - id: linux-arm64 + main: ./ + goos: + - linux + goarch: + - arm64 + env: + - CGO_ENABLED=1 + - CC=aarch64-linux-gnu-gcc + - CXX=aarch64-linux-gnu-g++ + - CGO_CFLAGS=--sysroot=/sysroot/linux_arm64 + - CGO_LDFLAGS=--sysroot=/sysroot/linux_arm64 -lresolv + - PKG_CONFIG_SYSROOT_DIR=/sysroot/linux_arm64 + - PKG_CONFIG_PATH=/sysroot/linux_arm64/opt/vc/lib/pkgconfig:/sysroot/linux_arm64/usr/lib/aarch64-linux-gnu/pkgconfig:/sysroot/linux_arm64/usr/lib/pkgconfig:/sysroot/linux_arm64/usr/local/lib/pkgconfig + flags: + - -mod=readonly + ldflags: + - -s -w -X main.version={{.Version}} + - id: linux-amd64 + main: ./ + goos: + - linux + goarch: + - amd64 + env: + - CGO_ENABLED=1 + - CC=x86_64-linux-gnu-gcc + - CXX=x86_64-linux-gnu-g++ + - CGO_CFLAGS=--sysroot=/sysroot/linux_amd64 + - CGO_LDFLAGS=--sysroot=/sysroot/linux_amd64 -lresolv + - PKG_CONFIG_SYSROOT_DIR=/sysroot/linux_amd64 + - PKG_CONFIG_PATH=/sysroot/linux_amd64/opt/vc/lib/pkgconfig:/sysroot/linux_amd64/usr/lib/x86_64-linux-gnu/pkgconfig:/sysroot/linux_amd64/usr/lib/pkgconfig:/sysroot/linux_amd64/usr/local/lib/pkgconfig + flags: + - -mod=readonly + ldflags: + - -s -w -X main.version={{.Version}} + - id: windows-x64 + main: ./ + goos: + - windows + goarch: + - amd64 + ldflags: -buildmode=exe + env: + - CGO_ENABLED=1 + - CC=x86_64-w64-mingw32-gcc + - CXX=x86_64-w64-mingw32-g++ + +archives: + - id: standard + format: tar.gz + builds: + - linux-arm64 + - linux-amd64 + name_template: "{{ .ProjectName }}-{{ .Version }}.{{ .Os }}-{{ .Arch }}" + wrap_in_directory: true + - id: windows-x64 + format: zip + builds: + - windows-x64 + name_template: "{{ .ProjectName }}-{{ .Version }}.{{ .Os }}-{{ .Arch }}" + wrap_in_directory: false + files: + - LICENSE.txt + - README.md + - src: wintun/bin/amd64/wintun.dll + dst: wintun.dll + - src: wintun/LICENSE.txt + dst: wintun-LICENSE.txt + + +checksum: + name_template: "checksums.txt" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c0aee19 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +ARG GO_BUILDER_VERSION + +FROM ghcr.io/gythialy/golang-cross:$GO_BUILDER_VERSION + +RUN apt-get update; \ + apt-get --no-install-recommends -y -q install protobuf-compiler; \ + go install google.golang.org/protobuf/cmd/protoc-gen-go@latest; \ + go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest + +ENV PATH="/root/go/bin:$PATH" diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..c11d2f8 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2025 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8878a25 --- /dev/null +++ b/Makefile @@ -0,0 +1,69 @@ +VERSION ?= $(shell git describe --tags `git rev-list --tags --max-count=1`) +GITREV = $(shell git rev-parse --short HEAD) +BUILDTIME = $(shell date +'%FT%TZ%z') +PACKAGE_NAME := github.com/grmrgecko/virtual-vxlan +GO_BUILDER_VERSION ?= 1.23 + +.PHONY: default +default: build ; + +.PHONY: build-sysroot +build-sysroot: + ./sysroot/build.sh + +.PHONY: build-docker-image +build-docker-image: + docker build -t goreleaser-cross --build-arg GO_BUILDER_VERSION=$(GO_BUILDER_VERSION) . + +.PHONY: deps +deps: + go get -u github.com/golangci/golangci-lint/cmd/golangci-lint + go get -u github.com/git-chglog/git-chglog/cmd/git-chglog + go get -u golang.org/x/tools/cmd/goimports + go install google.golang.org/protobuf/cmd/protoc-gen-go@latest + go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest + +.PHONY: build +build: + go build + +.PHONY: generate +generate: + go mod tidy + go get golang.org/x/tools/cmd/stringer@latest + go generate + +.PHONY: clean +clean: + rm -rf virtual-vxlan* dist CHANGELOG.md + +.PHONY: changelog +changelog: + git-chglog $(VERSION) > CHANGELOG.md + +.PHONY: snapshot +snapshot: + docker run \ + --rm --privileged \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v $(CURDIR):/go/src/$(PACKAGE_NAME) \ + -v $(CURDIR)/sysroot:/sysroot \ + -w /go/src/$(PACKAGE_NAME) \ + goreleaser-cross:latest \ + --clean --skip=publish --snapshot --verbose + +.PHONY: release +release: changelog + docker run \ + --rm --privileged \ + --env-file .release-env \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v $(CURDIR):/go/src/$(PACKAGE_NAME) \ + -v $(CURDIR)/sysroot:/sysroot \ + -w /go/src/$(PACKAGE_NAME) \ + goreleaser-cross:latest \ + --clean --release-notes=CHANGELOG.md + +.PHONY: lint +lint: + golangci-lint run --fix diff --git a/README.md b/README.md new file mode 100644 index 0000000..c86c42d --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +# virtual-vxlan + +Virtual VXLAN is a tool written to allow VXLAN interfaces to be used on Windows. I may also add support for other operating systems as well, but for now this is a Windows and Linux only project due to immediate needs. The tool uses [Wintun](https://www.wintun.net/) and the [WireGuard-go tun drivers](https://github.com/WireGuard/wireguard-go/tree/master/tun) to make virtual interfaces, then it listens for vxlan packets over UDP and does translations between the tun interface and the vxlan listener. + +## Install + +You can either download the latest binary from the releases, or you can build this project. For better performance on Windows, install [Npcap](https://npcap.com/#download). + +## Building + +You can build as follows: + +```bash +make deps +make +``` + +## Running as a service + +This project includes service support built in, simply install and start it as follows: + +```bash +virtual-vxlan service install +virtual-vxlan service start +``` + +## Running from cli + +If you are developing the software, or need more debug output. It may be worth running from the cli. + +```bash +virtual-vxlan server --log-level=debug +``` + +## Config + +The configuration is mainly managed by the service itself, however you may set manual configurations according to the `config.go` file. + +## Usage + +The cli has extensive help available via the following: + +```bash +virtual-vxlan --help +``` + +Basic setup of a vxlan service is as follows. + +- Start the service and/or server. + +- Add vxlan listener: +```bash +virtual-vxlan listener vxlan add --address='10.0.0.2:4789' --permanent +``` + +Note: It is important to use the IP adddress of an interface on the system to allow the interface to be put into promiscuous mode, which is required as otherwise hardware vxlan filtering will block the packets from being received and sent. This is a known issue on Windows, however it has not been tested on other operating systems. + +- Add tun interface to the vxlan listener: +```bash +virtual-vxlan listener vxlan interface vxlan20 add --vni=20 --permanent +``` + +- Set an IP address on the interface: +```bash +virtual-vxlan listener vxlan interface vxlan20 set-ip-addresses --ip-address=192.168.30.0/24 +``` + +- Set a default destination for vxlan packets: +```bash +virtual-vxlan listener vxlan interface vxlan20 add-mac-entry --mac="00:00:00:00:00:00" --destination="10.0.0.3" --permanent +``` + +- Save the configuration: +```bash +virtual-vxlan config save +``` diff --git a/config.go b/config.go new file mode 100644 index 0000000..e411892 --- /dev/null +++ b/config.go @@ -0,0 +1,512 @@ +package main + +import ( + "fmt" + "net" + "net/netip" + "os" + "path/filepath" + "time" + + "github.com/kkyr/fig" + "github.com/shibukawa/configdir" + log "github.com/sirupsen/logrus" + "gopkg.in/yaml.v3" +) + +// Just bare minimal configuration for reading in cli calls. +type ConfigMinimal struct { + RPCPath string `fig:"rpc_path" yaml:"rpc_path"` + Update *UpdateConfig `fig:"update" yaml:"update"` + Log *LogConfig `fig:"log" yaml:"log"` +} + +// Main configuration structure. +type Config struct { + ConfigMinimal + Listeners []ListenerConfig `fig:"listeners" yaml:"listeners"` +} + +type LogConfig struct { + Level string `fig:"level" yaml:"level" enum:"debug,info,warn,error" default:"info"` + Type string `fig:"level" yaml:"level" enum:"json,console" default:"console"` +} + +// Configuration for updating. +type UpdateConfig struct { + Owner string `fig:"owner" yaml:"owner"` + Repo string `fig:"repo" yaml:"repo"` + Disabled bool `fig:"disabled" yaml:"disabled"` + CurrentVersion string `fig:"-" yaml:"-"` + ShouldRelaunch bool `fig:"-" yaml:"-"` + PreUpdate func() `fig:"-" yaml:"-"` + IsSuccessMsg func(string) bool `fig:"-" yaml:"-"` + StartupTimeout time.Duration `fig:"-" yaml:"-"` + AbortUpdate func() `fig:"-" yaml:"-"` +} + +// Listener configuration structure. +type ListenerConfig struct { + Name string `fig:"name" yaml:"name"` + Address string `fig:"address" yaml:"address"` + MaxMessageSize int `fig:"max_message_size" yaml:"max_message_size"` + Interfaces []InterfaceConfig `fig:"interfaces" yaml:"interfaces"` +} + +// Interface configuration strucuture. +type InterfaceConfig struct { + Name string `fig:"name" yaml:"name"` + VNI uint32 `fig:"vni" yaml:"vni"` + MTU int `fig:"mtu" yaml:"mtu"` + MACAddress string `fig:"mac_address" yaml:"mac_address"` + IPAddressCIDRS []string `fig:"ip_addresess_cidrs" yaml:"ip_addresess_cidrs"` + ARPEntries []ARPEntryConfig `fig:"arp_entries" yaml:"arp_entries"` + MACEntries []MACEntryConfig `fig:"mac_entries" yaml:"mac_entries"` +} + +// Permanent ARP entries. +type ARPEntryConfig struct { + IPAddress string `fig:"ip_address" yaml:"ip_address"` + MACAddress string `fig:"mac_address" yaml:"mac_address"` +} + +// Permanent MAC entries. +type MACEntryConfig struct { + MACAddress string `fig:"mac_address" yaml:"mac_address"` + Destination string `fig:"destination" yaml:"destination"` +} + +// Applies common filters to the read configuration. +func (c *Config) ApplyFilters() { + // If the RPC path isn't set, set it to temp dir. + if c.RPCPath == "" { + c.RPCPath = filepath.Join(os.TempDir(), "virtual-vxlan.sock") + } + // Check if the RPC socket already exists. + _, err := os.Stat(c.RPCPath) + if err == nil { + // If the socket exists, see if its listening. + _, err = net.Dial("unix", c.RPCPath) + + // If its not listening, remove it to allow us to start. + if err != nil { + os.Remove(c.RPCPath) + } + } +} + +// Get the config path/ +func ConfigPath() (fileDir, fileName string) { + // Find the configuration directory. + configDirs := configdir.New(serviceVendor, serviceName) + folders := configDirs.QueryFolders(configdir.System) + if len(folders) == 0 { + log.Fatalf("Unable to find config path.") + } + + // Find the file name. + fileName = defaultConfigFile + fileDir = folders[0].Path + if flags.ConfigPath != "" { + fileDir, fileName = filepath.Split(flags.ConfigPath) + } + return +} + +// Makes the default config for reading. +func DefaultConfig() *Config { + config := new(Config) + config.Update = &UpdateConfig{ + Owner: "grmrgecko", + Repo: "virtual-vxlan", + } + config.Log = flags.Log + return config +} + +// Read configuration file and return the current config. +func ReadMinimalConfig() *Config { + // Setup default minimal config. + config := DefaultConfig() + + // Find the file name. + fileDir, fileName := ConfigPath() + + // Read the configuration file if it exists. + err := fig.Load(&config.ConfigMinimal, fig.File(fileName), fig.Dirs(fileDir)) + // On error, just print as we want to return a default config. + if err != nil { + log.Debug("Unable to load config file:", err) + } + + // Apply config filters. + config.ApplyFilters() + + // Apply any log configurations loaded from file. + config.Log.Apply() + return config +} + +// Read configuration file and return the current config. +func ReadConfig() *Config { + // Setup default config. + config := DefaultConfig() + + // Find the file name. + fileDir, fileName := ConfigPath() + + // Read the configuration file if it exists. + err := fig.Load(config, fig.File(fileName), fig.Dirs(fileDir)) + // On error, just print as we want to return a default config. + if err != nil { + log.Debug("Unable to load config file:", err) + } + + // Apply config filters. + config.ApplyFilters() + + // Apply any log configurations loaded from file. + config.Log.Apply() + return config +} + +// Apply the supplied configuration file to this app instance. +func ApplyConfig(config *Config) (err error) { + // Find listeners and interfaces that are permanent + // and not in the config being applied. Remove them + // so that we only have configured permanent entries. + { + var listenersToRemove []*Listener + var interfacesToRemove []*Interface + // Lock to prevent other actions. + app.Net.Lock() + for _, listener := range app.Net.Listeners { + if listener.Permanent { + // The address is the pretty name. + addr := listener.PrettyName() + + // Find listeners in the config that match this address. + var found *ListenerConfig + for _, list := range config.Listeners { + if addr == list.Address && listener.Name == list.Name { + found = &list + break + } + } + + // If we found a listener, check its interfaces. + if found != nil { + // Look for interfaces on this listener which + // are no longer in the config. + listener.net.RLock() + for _, iface := range listener.net.interfaces { + if iface.Permanent { + // Match by both name and VNI, either change + // and we need to remake it. + name := iface.Name() + vni := iface.VNI() + + // Loop to find. + foundIfce := false + for _, ifce := range found.Interfaces { + if ifce.Name == name && ifce.VNI == vni { + foundIfce = true + } + } + // If we didn't find this interface, add to remove list. + if !foundIfce { + interfacesToRemove = append(interfacesToRemove, iface) + } + } + } + listener.net.RUnlock() + } else { + // This listener wasn't found, lets remove it. + listenersToRemove = append(listenersToRemove, listener) + } + } + } + + // Unlock net as we're done looking at lists and we + // need it unlocked to remove items. + app.Net.Unlock() + + // Remove listeners not found. + for _, list := range listenersToRemove { + list.Close() + } + + // Remove interfaces not found. + for _, ifce := range interfacesToRemove { + ifce.Close() + } + } + + // Loop through listeners in the config to add/change the + // configurations of both listeners and their interfaces. + for _, listener := range config.Listeners { + // First check to see if an existing listener is there. + var l *Listener + app.Net.Lock() + for _, list := range app.Net.Listeners { + if list.PrettyName() == listener.Address { + l = list + l.Permanent = true + break + } + } + app.Net.Unlock() + + // If no existing listeners, add a new listener. + if l == nil { + l, err = NewListener(listener.Name, listener.Address, listener.MaxMessageSize, true) + if err != nil { + return fmt.Errorf("failed to start listener: %s %v", listener.Address, err) + } + } else { + // If the listener was already existing, update the max message size. + l.SetMaxMessageSize(listener.MaxMessageSize) + } + + // Loop through interfaces on this listener to add/upate them. + for _, iface := range listener.Interfaces { + // See if this interface is already on the listener. + var i *Interface + l.net.RLock() + for _, ifce := range l.net.interfaces { + if ifce.VNI() == iface.VNI { + i = ifce + i.Permanent = true + } + } + l.net.RUnlock() + + // If this interface isn't existing, add it. + if i == nil { + i, err = NewInterface(iface.Name, iface.VNI, iface.MTU, l, true) + if err != nil { + return fmt.Errorf("failed to make interface: %s %v", iface.Name, err) + } + } else { + // If the interface is existing, update the MTU. + i.SetMTU(iface.MTU) + } + + // Parse the interface's MAC address. + mac, err := net.ParseMAC(iface.MACAddress) + if err != nil { + return fmt.Errorf("failed tp parse MAC: %s %v", iface.MACAddress, err) + } + + // Set the interface's MAC address. + err = i.SetMACAddress(mac) + if err != nil { + return fmt.Errorf("failed to set MAC address %s on interface %s: %v", iface.MACAddress, iface.Name, err) + } + + // Parse the interface's IP addresses CIDRs. + var prefixes []netip.Prefix + for _, addr := range iface.IPAddressCIDRS { + prefix, err := netip.ParsePrefix(addr) + if err != nil { + return fmt.Errorf("failed to parse CIDR: %s %v", addr, err) + } + prefixes = append(prefixes, prefix) + } + + // If IP addresses are set for this interface, set them. + if len(prefixes) != 0 { + err = i.SetIPAddresses(prefixes) + if err != nil { + return fmt.Errorf("failed to set IP addresses on interface: %s %v", iface.Name, err) + } + } + + // Flush the ARP table of any permanent entry. + i.tables.Lock() + found := true + for found { + found = false + for p, ent := range i.tables.arp { + if ent.Permanent { + found = true + i.tables.arp = append(i.tables.arp[:p], i.tables.arp[p+1:]...) + break + } + } + } + i.tables.Unlock() + + // Add permanent ARP entries from the config. + for _, ent := range iface.ARPEntries { + addr, err := netip.ParseAddr(ent.IPAddress) + if err != nil { + return fmt.Errorf("failed to parse IP: %s %v", ent.IPAddress, err) + } + mac, err := net.ParseMAC(ent.MACAddress) + if err != nil { + return fmt.Errorf("failed to parse MAC: %s %v", ent.MACAddress, err) + } + i.AddStaticARPEntry(addr, mac, true) + } + + // Flush the MAC table of any permanent entry. + i.tables.Lock() + found = true + for found { + found = false + for p, ent := range i.tables.mac { + if ent.Permanent { + found = true + i.tables.mac = append(i.tables.mac[:p], i.tables.mac[p+1:]...) + break + } + } + } + i.tables.Unlock() + + // Add permanent entries from this config. + for _, ent := range iface.MACEntries { + mac, err := net.ParseMAC(ent.MACAddress) + if err != nil { + return fmt.Errorf("failed to parse MAC: %s %v", ent.MACAddress, err) + } + dst := net.ParseIP(ent.Destination) + if dst == nil { + return fmt.Errorf("failed to parse destination: %s", ent.Destination) + } + i.AddMACEntry(mac, dst, true) + } + } + } + + // No errors occurred, configuration is applied. + return nil +} + +// Take the current application state and save permanent configurations +// to the configuration file. +func SaveConfig() error { + // Start a new configuration file. + config := new(Config) + config.RPCPath = app.grpcServer.RPCPath + config.Update = app.UpdateConfig + config.Log = flags.Log + + // Look the global app config during this process. + app.Net.Lock() + defer app.Net.Unlock() + + // Loop through listeners and add permanent listeners to the config. + for _, listener := range app.Net.Listeners { + // If this listener is permanent, add it. + if listener.Permanent { + // Make a listener config. + listnr := ListenerConfig{ + Address: listener.PrettyName(), + MaxMessageSize: listener.MaxMessageSize(), + Name: listener.Name, + } + + // Loop through interfaces on this listener and add to the config. + listener.net.Lock() + for _, iface := range listener.net.interfaces { + // Only add interface if its permanent. + if iface.Permanent { + // Get the MAC Address. + mac, err := iface.GetMACAddress() + if err != nil { + return err + } + // Get the IP addresses on this interface. + ipAddrs, err := iface.GetIPAddresses() + if err != nil { + return err + } + + // Make the config for this interface. + ifce := InterfaceConfig{ + Name: iface.Name(), + VNI: iface.VNI(), + MTU: iface.MTU(), + MACAddress: mac.String(), + } + + // Add the CIDRs for this interface. + for _, addr := range ipAddrs { + ifce.IPAddressCIDRS = append(ifce.IPAddressCIDRS, addr.String()) + } + + // Get and add permanent ARP entries to the config. + for _, ent := range iface.GetARPEntries() { + if ent.Permanent { + entry := ARPEntryConfig{ + IPAddress: ent.Addr.String(), + MACAddress: ent.MAC.String(), + } + ifce.ARPEntries = append(ifce.ARPEntries, entry) + } + } + + // Get and add permanent MAC enties to the config. + for _, ent := range iface.GetMACEntries() { + if ent.Permanent { + entry := MACEntryConfig{ + MACAddress: ent.MAC.String(), + Destination: ent.Dst.IP.String(), + } + ifce.MACEntries = append(ifce.MACEntries, entry) + } + } + + // Add this interface config to the listener config. + listnr.Interfaces = append(listnr.Interfaces, ifce) + } + } + listener.net.Unlock() + + // Add this listener to the list of listeners in the config. + config.Listeners = append(config.Listeners, listnr) + } + } + + // Encode YAML data. + data, err := yaml.Marshal(config) + if err != nil { + return err + } + + // Find the file name. + fileDir, fileName := ConfigPath() + + // Verify directory exists. + if _, ferr := os.Stat(fileDir); ferr != nil { + err = os.MkdirAll(fileDir, 0755) + if err != nil { + log.Error("Failed to make directory:", err) + } + } + + // Write the configuration file. + err = os.WriteFile(filepath.Join(fileDir, fileName), data, 0644) + return err +} + +func (l *LogConfig) Apply() { + switch l.Level { + case "debug": + log.SetLevel(log.DebugLevel) + case "info": + log.SetLevel(log.InfoLevel) + case "warn": + log.SetLevel(log.WarnLevel) + default: + log.SetLevel(log.ErrorLevel) + } + switch l.Type { + case "json": + log.SetFormatter(&log.JSONFormatter{}) + default: + log.SetFormatter(&log.TextFormatter{}) + } +} diff --git a/config_cmd.go b/config_cmd.go new file mode 100644 index 0000000..3f60f23 --- /dev/null +++ b/config_cmd.go @@ -0,0 +1,66 @@ +package main + +import ( + "context" + "fmt" + "time" + + pb "github.com/grmrgecko/virtual-vxlan/vxlan" +) + +// The command for saving configuration. +type ConfigSaveCmd struct { +} + +func (a *ConfigSaveCmd) Run() (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to save configuration. + _, err = c.SaveConfig(ctx, &pb.Empty{}) + if err != nil { + return + } + + fmt.Println("Configuration saved") + return +} + +type ConfigReloadCmd struct { +} + +func (a *ConfigReloadCmd) Run() (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to reload the configuration. + _, err = c.ReloadConfig(ctx, &pb.Empty{}) + if err != nil { + return + } + + fmt.Println("Configuration reloaded") + return +} + +// Commands for managing the configuration. +type ConfigCmd struct { + Save ConfigSaveCmd `cmd:""` + Reload ConfigReloadCmd `cmd:""` +} diff --git a/config_grpc.go b/config_grpc.go new file mode 100644 index 0000000..f71f849 --- /dev/null +++ b/config_grpc.go @@ -0,0 +1,30 @@ +package main + +import ( + "context" + + pb "github.com/grmrgecko/virtual-vxlan/vxlan" + log "github.com/sirupsen/logrus" +) + +// Save configuration to yaml file. +func (s *GRPCServer) SaveConfig(ctx context.Context, in *pb.Empty) (*pb.Empty, error) { + log.Println("Saving configurations.") + err := SaveConfig() + if err != nil { + return nil, err + } + return new(pb.Empty), nil +} + +// Reload the configuration from the yaml file. +func (s *GRPCServer) ReloadConfig(ctx context.Context, in *pb.Empty) (*pb.Empty, error) { + log.Println("Reloading configurations.") + config := ReadConfig() + err := ApplyConfig(config) + if err != nil { + log.Println(err) + return nil, err + } + return new(pb.Empty), nil +} diff --git a/devicestate_string.go b/devicestate_string.go new file mode 100644 index 0000000..b34cd1d --- /dev/null +++ b/devicestate_string.go @@ -0,0 +1,25 @@ +// Code generated by "stringer -type deviceState -trimprefix=deviceState"; DO NOT EDIT. + +package main + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[deviceStateDown-0] + _ = x[deviceStateUp-1] + _ = x[deviceStateClosed-2] +} + +const _deviceState_name = "DownUpClosed" + +var _deviceState_index = [...]uint8{0, 4, 6, 12} + +func (i deviceState) String() string { + if i >= deviceState(len(_deviceState_index)-1) { + return "deviceState(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _deviceState_name[_deviceState_index[i]:_deviceState_index[i+1]] +} diff --git a/flags.go b/flags.go new file mode 100644 index 0000000..7bde0e0 --- /dev/null +++ b/flags.go @@ -0,0 +1,51 @@ +package main + +import ( + "fmt" + "os" + "strings" + + "github.com/alecthomas/kong" +) + +type VersionFlag bool + +func (v VersionFlag) Decode(ctx *kong.DecodeContext) error { return nil } +func (v VersionFlag) IsBool() bool { return true } +func (v VersionFlag) BeforeApply(app *kong.Kong, vars kong.Vars) error { + fmt.Println(serviceName + ": " + serviceVersion) + os.Exit(0) + return nil +} + +// Flags supplied to cli. +type Flags struct { + Version VersionFlag `name:"version" help:"Print version information and quit"` + ConfigPath string `help:"The path to the config file" optional:"" type:"existingfile"` + Log *LogConfig `embed:"" prefix:"log-"` + Server ServerCmd `cmd:"" help:"Run the Virtual VXLAN service"` + Service ServiceCmd `cmd:"" help:"Manage the Virtual VXLAN service"` + Listener ListenerCmd `cmd:"" help:"Manage listeners"` + Config ConfigCmd `cmd:"" help:"Manage configuration"` + Update UpdateCmd `cmd:"" help:"Check for updates and apply"` +} + +var flags *Flags + +// Parse the supplied flags. +func ParseFlags() *kong.Context { + flags = new(Flags) + + ctx := kong.Parse(flags, + kong.Name(serviceName), + kong.Description(serviceDescription), + kong.UsageOnError(), + kong.ConfigureHelp(kong.HelpOptions{ + Compact: true, + }), + kong.Vars{ + "serviceActions": strings.Join(ServiceAction, ","), + }, + ) + return ctx +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..1c70a10 --- /dev/null +++ b/go.mod @@ -0,0 +1,59 @@ +module github.com/grmrgecko/virtual-vxlan + +go 1.23.4 + +require ( + github.com/alecthomas/kong v1.6.0 + github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf + github.com/creativeprojects/go-selfupdate v1.4.0 + github.com/google/gopacket v1.1.19 + github.com/hashicorp/go-version v1.7.0 + github.com/jedib0t/go-pretty/v6 v6.6.5 + github.com/kardianos/service v1.2.2 + github.com/kkyr/fig v0.4.0 + github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0 + github.com/sirupsen/logrus v1.9.3 + github.com/vishvananda/netlink v1.3.0 + golang.org/x/sys v0.29.0 + golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 + golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 + golang.zx2c4.com/wireguard/windows v0.5.3 + google.golang.org/grpc v1.69.2 + google.golang.org/protobuf v1.36.1 + gopkg.in/yaml.v3 v3.0.1 +) + +require ( + code.gitea.io/sdk/gitea v0.19.0 // indirect + github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/davidmz/go-pageant v1.0.2 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/go-fed/httpsig v1.1.0 // indirect + github.com/google/go-github/v30 v30.1.0 // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/rogpeppe/go-internal v1.13.2-0.20241226121412-a5dc8ff20d0a // indirect + github.com/stretchr/testify v1.10.0 // indirect + github.com/ulikunitz/xz v0.5.12 // indirect + github.com/vishvananda/netns v0.0.4 // indirect + github.com/xanzy/go-gitlab v0.112.0 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/mod v0.22.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/term v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.28.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..234842a --- /dev/null +++ b/go.sum @@ -0,0 +1,178 @@ +code.gitea.io/sdk/gitea v0.19.0 h1:8I6s1s4RHgzxiPHhOQdgim1RWIRcr0LVMbHBjBFXq4Y= +code.gitea.io/sdk/gitea v0.19.0/go.mod h1:IG9xZJoltDNeDSW0qiF2Vqx5orMWa7OhVWrjvrd5NpI= +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/kong v1.6.0 h1:mwOzbdMR7uv2vul9J0FU3GYxE7ls/iX1ieMg5WIM6gE= +github.com/alecthomas/kong v1.6.0/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU= +github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= +github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU= +github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creativeprojects/go-selfupdate v1.4.0 h1:4ePPd2CPCNl/YoPXeVxpuBLDUZh8rMEKP5ac+1Y/r5c= +github.com/creativeprojects/go-selfupdate v1.4.0/go.mod h1:oPG7LmzEmS6OxfqEm620k5VKxP45xFZNKMkp4V5qqUY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidmz/go-pageant v1.0.2 h1:bPblRCh5jGU+Uptpz6LgMZGD5hJoOt7otgT454WvHn0= +github.com/davidmz/go-pageant v1.0.2/go.mod h1:P2EDDnMqIwG5Rrp05dTRITj9z2zpGcD9efWSkTNKLIE= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI= +github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github/v30 v30.1.0 h1:VLDx+UolQICEOKu2m4uAoMti1SxuEBAl7RSEG16L+Oo= +github.com/google/go-github/v30 v30.1.0/go.mod h1:n8jBpHl45a/rlBUtRJMOG4GhNADUQFEufcolZ95JfU8= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= +github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/jedib0t/go-pretty/v6 v6.6.5 h1:9PgMJOVBedpgYLI56jQRJYqngxYAAzfEUua+3NgSqAo= +github.com/jedib0t/go-pretty/v6 v6.6.5/go.mod h1:Uq/HrbhuFty5WSVNfjpQQe47x16RwVGXIveNGEyGtHs= +github.com/kardianos/service v1.2.2 h1:ZvePhAHfvo0A7Mftk/tEzqEZ7Q4lgnR8sGz4xu1YX60= +github.com/kardianos/service v1.2.2/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM= +github.com/kkyr/fig v0.4.0 h1:4D/g72a8ij1fgRypuIbEoqIT7ukf2URVBtE777/gkbc= +github.com/kkyr/fig v0.4.0/go.mod h1:U4Rq/5eUNJ8o5UvOEc9DiXtNf41srOLn2r/BfCyuc58= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.13.2-0.20241226121412-a5dc8ff20d0a h1:w3tdWGKbLGBPtR/8/oO74W6hmz0qE5q0z9aqSAewaaM= +github.com/rogpeppe/go-internal v1.13.2-0.20241226121412-a5dc8ff20d0a/go.mod h1:S8kfXMp+yh77OxPD4fdM6YUknrZpQxLhvxzS4gDHENY= +github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0 h1:Xuk8ma/ibJ1fOy4Ee11vHhUFHQNpHhrBneOCNHVXS5w= +github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0/go.mod h1:7AwjWCpdPhkSmNAgUv5C7EJ4AbmjEB3r047r3DXWu3Y= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= +github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/vishvananda/netlink v1.3.0 h1:X7l42GfcV4S6E4vHTsw48qbrV+9PVojNfIhZcwQdrZk= +github.com/vishvananda/netlink v1.3.0/go.mod h1:i6NetklAujEcC6fK0JPjT8qSwWyO0HLn4UKG+hGqeJs= +github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= +github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= +github.com/xanzy/go-gitlab v0.112.0 h1:6Z0cqEooCvBMfBIHw+CgO4AKGRV8na/9781xOb0+DKw= +github.com/xanzy/go-gitlab v0.112.0/go.mod h1:wKNKh3GkYDMOsGmnfuX+ITCmDuSDWFO0G+C4AygL9RY= +go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= +go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= +go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= +go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= +go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= +go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= +go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= +go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= +go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= +go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= +golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg= +golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= +golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4= +golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= +golang.zx2c4.com/wireguard/windows v0.5.3 h1:On6j2Rpn3OEMXqBq00QEDC7bWSZrPIHKIus8eIuExIE= +golang.zx2c4.com/wireguard/windows v0.5.3/go.mod h1:9TEe8TJmtwyQebdFwAkEWOPr3prrtqm+REGFifP60hI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= +google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/grpc.go b/grpc.go new file mode 100644 index 0000000..cf95367 --- /dev/null +++ b/grpc.go @@ -0,0 +1,77 @@ +package main + +import ( + "fmt" + "net" + + pb "github.com/grmrgecko/virtual-vxlan/vxlan" + log "github.com/sirupsen/logrus" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +// Allows go generate to compile the protobuf to golang. +//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative ./vxlan/vxlan.proto + +// GRPC server structure. +type GRPCServer struct { + pb.UnimplementedVxlanServer + RPCPath string + server *grpc.Server +} + +// Start serving GRPC requests. +func (s *GRPCServer) Serve(li net.Listener) { + err := s.server.Serve(li) + if err != nil { + log.Errorf("Error serving grpc: %v", err) + } +} + +// Stop GRPC server. +func (s *GRPCServer) Close() { + s.server.Stop() +} + +// Start GRPC server. +func NewGRPCServer(rpcPath string) (s *GRPCServer, err error) { + // Verify another server doesn't exist. + if app.grpcServer != nil { + return nil, fmt.Errorf("grpc server is already running") + } + + // Connect to RPC path. + li, err := net.Listen("unix", rpcPath) + if err != nil { + return nil, fmt.Errorf("failed to listen on socket: %v", err) + } + + // Setup server. + s = new(GRPCServer) + s.server = grpc.NewServer() + + // Register the vxlan service to this server. + pb.RegisterVxlanServer(s.server, s) + + // Update the global app gRPC server. + app.grpcServer = s + + // Start serving requests. + go s.Serve(li) + return s, nil +} + +// Start a connection to the gRPC Server. +func NewGRPCClient() (c pb.VxlanClient, conn *grpc.ClientConn, err error) { + // Read the minimal config. + config := ReadMinimalConfig() + + // Start an gRPC client connection to the unix socket. + conn, err = grpc.NewClient(fmt.Sprintf("unix:%s", config.RPCPath), grpc.WithTransportCredentials(insecure.NewCredentials())) + + // If connection is successful, provide client to the vxlan service. + if err == nil { + c = pb.NewVxlanClient(conn) + } + return +} diff --git a/interface.go b/interface.go new file mode 100644 index 0000000..e4854d1 --- /dev/null +++ b/interface.go @@ -0,0 +1,1154 @@ +package main + +import ( + "bytes" + "errors" + "fmt" + "math/rand" + "net" + "net/netip" + "os" + "sync" + "sync/atomic" + "time" + + "github.com/google/gopacket" + "github.com/google/gopacket/layers" + "github.com/grmrgecko/virtual-vxlan/tun" + log "github.com/sirupsen/logrus" +) + +// ARP Table Entry. +type ArpEntry struct { + Addr netip.Addr + MAC net.HardwareAddr + Expires time.Time + Permanent bool + Updating bool +} + +// MAC Table Entry. +type MacEntry struct { + MAC net.HardwareAddr + Dst *net.UDPAddr + Permanent bool +} + +// The vxlan interface containing the tun device. +type Interface struct { + name string + vni uint32 + + state struct { + state atomic.Uint32 + stopping sync.WaitGroup + sync.Mutex + } + + tun struct { + device tun.Device + mtu atomic.Int32 + mtuc chan int + mac net.HardwareAddr + addresses []netip.Prefix + sync.RWMutex + } + + tables struct { + arp []ArpEntry + arpEvent map[netip.Addr][]chan net.HardwareAddr + mac []MacEntry + sync.RWMutex + } + + Permanent bool + l *Listener + closed chan struct{} + log *log.Entry +} + +// Create an interface for the vxlan VNI. +func NewInterface(name string, vni uint32, mtu int, l *Listener, perm bool) (i *Interface, err error) { + // Verify we have an listener, and lock it. + if l == nil { + return nil, fmt.Errorf("we need a listener to attach to") + } + if !l.Permanent && perm { + return nil, fmt.Errorf("cannot add permanent interface to non-permanent listener") + } + l.net.Lock() + defer l.net.Unlock() + + // Check that an interface doesn't already exist with this VNI. + for _, ifce := range l.net.interfaces { + if ifce.vni == vni { + return nil, fmt.Errorf("existing vni %d interface on listener %s", vni, l.PrettyName()) + } + } + + // Verify an interface on the machine doesn't already have the requested name. + ifaces, err := net.Interfaces() + if err != nil { + return + } + for _, iface := range ifaces { + if iface.Name == name { + return nil, fmt.Errorf("existing interface with name %s", name) + } + } + + // If MTU is not provided, use the listener's MTU minus 50 bytes for vxlan. + if mtu <= 1 { + mtu = l.net.maxMessageSize - 50 + } + + // Create the tunnel interface. + tun, err := tun.CreateTUN(name, mtu) + if err != nil { + return nil, fmt.Errorf("failed to create TUN device: %v", err) + } + + // Verify the real name from the interface in-case the OS decided + // to change it from the request. + realName, err := tun.Name() + if err != nil { + return nil, fmt.Errorf("failed to get device name: %v", err) + } + + // Verify the MTU incase the OS changed from requested MTU. + mtu, err = tun.MTU() + if err != nil { + return nil, fmt.Errorf("failed to get device mtu: %v", err) + } + + // Setup the interface structure. + i = new(Interface) + i.name = realName + i.vni = vni + i.state.state.Store(uint32(deviceStateDown)) + i.closed = make(chan struct{}) + i.tun.device = tun + i.tun.mtu.Store(int32(mtu)) + i.tun.mtuc = make(chan int) + i.tun.mac = generateRandomMAC() + i.tables.arpEvent = make(map[netip.Addr][]chan net.HardwareAddr) + i.l = l + i.log = log.WithFields(log.Fields{ + "listener": l.PrettyName(), + "device": name, + "vni": vni, + }) + i.Permanent = perm + l.net.interfaces = append(l.net.interfaces, i) + + // Start the task queues. + go i.runARPExpiryJob() + go i.eventReader() + go i.packetReader() + + // Inform that the interface has started. + i.log.Print("Interface started.") + + return +} + +// The state of the tun device. +type deviceState uint32 + +//go:generate go run golang.org/x/tools/cmd/stringer -type deviceState -trimprefix=deviceState +const ( + deviceStateDown deviceState = iota + deviceStateUp + deviceStateClosed +) + +// Gets the current device state. +func (i *Interface) DeviceState() deviceState { + return deviceState(i.state.state.Load()) +} + +// Is the device closed? +func (i *Interface) IsClosed() bool { + return i.DeviceState() == deviceStateClosed +} + +// Is the device up? +func (i *Interface) IsUp() bool { + return i.DeviceState() == deviceStateUp +} + +// Change the device state. +func (i *Interface) changeState(want deviceState) { + i.state.Lock() + defer i.state.Unlock() + old := i.DeviceState() + if old == deviceStateClosed { + // once closed, always closed + i.log.Debugf("Interface closed, ignored requested state %v", want) + return + } + switch want { + case old: + return + case deviceStateUp: + i.state.state.Store(uint32(deviceStateUp)) + fallthrough // up failed; bring the device all the way back down + case deviceStateDown: + i.state.state.Store(uint32(deviceStateDown)) + } + i.log.Debugf("Interface state was %v, requested %v, now %v", old, want, i.DeviceState()) +} + +// Bring the internal device state to up. +func (i *Interface) Up() { + i.changeState(deviceStateUp) +} + +// Bring the internal device state to down. +func (i *Interface) Down() { + i.changeState(deviceStateDown) +} + +// Set the interface MTU. +func (i *Interface) SetMTU(mtu int) error { + // If MTU is not provided, use the listener's MTU minus 50 bytes for vxlan. + if mtu <= 1 { + mtu = i.l.net.maxMessageSize - 50 + } + return i.tun.device.SetMTU(mtu) +} + +// Get the interface MTU. +func (i *Interface) MTU() int { + return int(i.tun.mtu.Load()) +} + +// Get the interface name. +func (i *Interface) Name() string { + return i.name +} + +// Get the VNI assigned for this interface. +func (i *Interface) VNI() uint32 { + return i.vni +} + +// Close this interface. +func (i *Interface) Close() (err error) { + i.state.Lock() + defer i.state.Unlock() + if i.IsClosed() { + return + } + i.state.state.Store(uint32(deviceStateClosed)) + i.log.Debug("Interface is closing.") + + err = i.tun.device.Close() + i.state.stopping.Wait() + + // Remove self from listener. + netc := &i.l.net + netc.Lock() + defer netc.Unlock() + for p, iface := range netc.interfaces { + if iface == i { + netc.interfaces = append(netc.interfaces[:p], netc.interfaces[p+1:]...) + break + } + } + close(i.closed) + i.log.Print("Interface closed.") + return +} + +// Set the MAC address for this interface. +func (i *Interface) SetMACAddress(mac net.HardwareAddr) (err error) { + i.tun.Lock() + i.tun.mac = mac + i.tun.Unlock() + return +} + +// Get the MAC address for this interface. +func (i *Interface) GetMACAddress() (net.HardwareAddr, error) { + i.tun.RLock() + defer i.tun.RUnlock() + return i.tun.mac, nil +} + +// Set IP addresses on this interface. +func (i *Interface) SetIPAddresses(addresses []netip.Prefix) (err error) { + i.tun.Lock() + defer i.tun.Unlock() + err = i.tun.device.SetIPAddresses(addresses) + if err != nil { + return + } + i.tun.addresses = addresses + return +} + +// Get IP adddreses on this interface. +func (i *Interface) GetIPAddresses() ([]netip.Prefix, error) { + return i.tun.device.GetIPAddresses() +} + +// Add an entry to the MAC table. +func (i *Interface) AddMACEntry(mac net.HardwareAddr, dst net.IP, perm bool) error { + // Lock tables to prevent concurrent requests. + i.tables.Lock() + defer i.tables.Unlock() + + // Verify this entry doesn't already exist. + for _, ent := range i.tables.mac { + if bytes.Equal(ent.MAC, mac) && ent.Dst.IP.Equal(dst) { + return fmt.Errorf("entry already exists for %v via %v", mac, dst) + } + } + + // Get the UDP address for the provided IP. + addr, _ := netip.AddrFromSlice(dst) + udpAddr := net.UDPAddrFromAddrPort(netip.AddrPortFrom(addr, uint16(i.l.net.addr.Port))) + + // Add entry to MAC table. + entry := MacEntry{ + MAC: mac, + Dst: udpAddr, + Permanent: perm, + } + i.tables.mac = append(i.tables.mac, entry) + return nil +} + +// Remove an individual MAC table entry. +func (i *Interface) RemoveMACEntry(mac net.HardwareAddr, dst net.IP) error { + // Lock table during modification. + i.tables.Lock() + defer i.tables.Unlock() + + // Find matching entry. + found := -1 + for i, ent := range i.tables.mac { + if bytes.Equal(ent.MAC, mac) && ent.Dst.IP.Equal(dst) { + found = i + break + } + } + + // If not found return error. + if found == -1 { + return fmt.Errorf("unable to find matching MAC entry") + } + + // If found, remove it. + i.tables.mac = append(i.tables.mac[:found], i.tables.mac[found+1:]...) + return nil +} + +// Returns the MAC to destination table. +func (i *Interface) GetMACEntries() []MacEntry { + i.tables.RLock() + defer i.tables.RUnlock() + return i.tables.mac +} + +// Clears the MAC to UDP Address association table. +func (i *Interface) FlushMACTable() { + i.tables.Lock() + i.tables.mac = nil + i.tables.Unlock() +} + +// Find a destination UDP address for a MAC address. +func (i *Interface) GetDestinationFor(mac net.HardwareAddr) *net.UDPAddr { + // Lock tables to prevent concurrent requests. + i.tables.RLock() + defer i.tables.RUnlock() + + // Keep track of both controller and direct matches. + var controllers []*net.UDPAddr + var matches []*net.UDPAddr + + // Find matches. + for _, ent := range i.tables.mac { + if bytes.Equal(ent.MAC, app.ControllerMac) { + controllers = append(controllers, ent.Dst) + } else if bytes.Equal(ent.MAC, mac) { + matches = append(matches, ent.Dst) + } + } + + // If we have an direct match, return a random entry. + if len(matches) != 0 { + return matches[rand.Intn(len(matches))] + } + + // If we have no direct matches, but controllers, return a random controller. + if len(controllers) != 0 { + return controllers[rand.Intn(len(controllers))] + } + + // If we found no matches at all, return nil. + return nil +} + +// Add an ARP entry that is static. +func (i *Interface) AddStaticARPEntry(addr netip.Addr, mac net.HardwareAddr, perm bool) { + // Prevent concurrent table modifications. + i.tables.Lock() + defer i.tables.Unlock() + + // Keep track on if we updated an existing entry. + updated := false + + // Check existing arp entires for this address. + for p, ent := range i.tables.arp { + // If this address is this entry, update or remove based on MAC. + if ent.Addr == addr { + // If MAC matches, update it. Otherwise, remove + // tne ARP entry as we're adding a new one. + if bytes.Equal(ent.MAC, mac) { + updated = true + i.tables.arp[p].Expires = time.Time{} + i.tables.arp[p].Updating = false + i.tables.arp[p].Permanent = perm + } else { + i.tables.arp = append(i.tables.arp[:p], i.tables.arp[p+1:]...) + } + break + } + } + + // If we didn't update an existing entry, we should add a new one. + if !updated { + newMac := make(net.HardwareAddr, 6) + copy(newMac, mac) + entry := ArpEntry{ + Addr: addr, + MAC: newMac, + Updating: false, + Permanent: perm, + } + i.tables.arp = append(i.tables.arp, entry) + } +} + +// Remove an individual MAC table entry. +func (i *Interface) RemoveARPEntry(addr netip.Addr) error { + // Lock table during modification. + i.tables.Lock() + defer i.tables.Unlock() + + // Find matching entry. + found := -1 + for i, ent := range i.tables.arp { + if ent.Addr == addr { + found = i + break + } + } + + // If not found return error. + if found == -1 { + return fmt.Errorf("unable to find matching ARP entry") + } + + // If found, remove it. + i.tables.arp = append(i.tables.arp[:found], i.tables.arp[found+1:]...) + return nil +} + +// Get ARP entries. +func (i *Interface) GetARPEntries() []ArpEntry { + i.tables.RLock() + defer i.tables.RUnlock() + return i.tables.arp +} + +// Add ARP entry, or update expiry on existing entry. +func (i *Interface) AddOrUpdateARP(addr netip.Addr, mac net.HardwareAddr) { + // Prevent concurrent table modifications. + i.tables.Lock() + defer i.tables.Unlock() + + // Keep track on if we updated an existing entry. + updated := false + + // Check existing arp entires for this address. + for p, ent := range i.tables.arp { + // If this address is this entry, update or remove based on MAC. + if ent.Addr == addr { + // If MAC matches, update it. Otherwise, remove + // tne ARP entry as we're adding a new one. + if bytes.Equal(ent.MAC, mac) { + updated = true + i.tables.arp[p].Expires = time.Now().Add(60 * time.Second) + i.tables.arp[p].Updating = false + } else { + i.tables.arp = append(i.tables.arp[:p], i.tables.arp[p+1:]...) + } + break + } + } + + // If we didn't update an existing entry, we should add a new one. + if !updated { + newMac := make(net.HardwareAddr, 6) + copy(newMac, mac) + entry := ArpEntry{ + Addr: addr, + MAC: newMac, + Expires: time.Now().Add(60 * time.Second), + Updating: false, + Permanent: false, + } + i.tables.arp = append(i.tables.arp, entry) + } +} + +// In the event of finding an expired MAC entry, we should +// try updating the entry to ensure its not changed. +func (i *Interface) updateARPFor(addr netip.Addr, brdMac net.HardwareAddr, ifceAddr netip.Addr) { + // Lock tables to make update channel. + i.tables.Lock() + + // As we did not find an existing entry, we need to make an ARP request. + // Start a channel to receive the ARP event back with the MAC. + c := make(chan net.HardwareAddr) + // Add to the event list. + i.tables.arpEvent[addr] = append(i.tables.arpEvent[addr], c) + // When this function is done, ensure the event channel is removed. + defer func() { + i.tables.Lock() + for p, ch := range i.tables.arpEvent[addr] { + if ch == c { + i.tables.arpEvent[addr] = append(i.tables.arpEvent[addr][:p], i.tables.arpEvent[addr][p+1:]...) + break + } + } + i.tables.Unlock() + }() + + // Unlock the tables to allow ARP replies to add to the tables. + i.tables.Unlock() + + // Get an destination UDP address for the ARP request. + dst := i.GetDestinationFor(brdMac) + if dst == nil { + return + } + + // Make Ethernet layer for packet. + eth := layers.Ethernet{ + SrcMAC: i.tun.mac, + DstMAC: brdMac, + EthernetType: layers.EthernetTypeARP, + } + + // Make ARP layer for packet. + arp := layers.ARP{ + AddrType: layers.LinkTypeEthernet, + HwAddressSize: 6, + Operation: layers.ARPRequest, + SourceHwAddress: []byte(i.tun.mac), + SourceProtAddress: ifceAddr.AsSlice(), + DstHwAddress: []byte{0, 0, 0, 0, 0, 0}, + DstProtAddress: addr.AsSlice(), + } + // Size and protocol type differs on IPv6 vs IPv4. + if addr.Is4() { + arp.Protocol = layers.EthernetTypeIPv4 + arp.ProtAddressSize = 4 + } else { + arp.Protocol = layers.EthernetTypeIPv6 + arp.ProtAddressSize = 16 + } + + // We give 3 ARP request tries, otherwise we timeout. + tries := 0 + for tries < 3 { + tries += 1 + // Try sending packet. + i.SendLayers(dst, ð, &arp) + select { + // If we receive the response, return the value. + case <-c: + return + // If we timeout, after 3 seconds, then continue. + case <-time.After(3 * time.Second): + i.log.Debugf("timeout on ARP request for %s with tries %d", addr.String(), tries) + continue + } + } + // If all tries are done, the addres is expired. + i.log.Debugf("MAC address for %s has expired", addr.String()) + + // Lock tables and find the entry to remove. + i.tables.Lock() + for p, ent := range i.tables.arp { + // If this is the right entry, remove it. + if ent.Addr == addr { + i.tables.arp = append(i.tables.arp[:p], i.tables.arp[p+1:]...) + break + } + } + i.tables.Unlock() +} + +// Find the MAC address for an IP address from the ARP table. +// If an entry doesn't exist, we will attempt to request it. +func (i *Interface) GetMacFor(addr netip.Addr) (net.HardwareAddr, error) { + // Lots of math depending on is4. + is4 := addr.Is4() + + // Multicast traffic should be destined to a multicast MAC address. + if addr.IsMulticast() { + if is4 { + // Get the lower 23 bits of the IPv4 address. + ip := addr.As4() + lower23 := uint32(ip[1])<<16 | uint32(ip[2])<<8 | uint32(ip[3]) + lower23 &= 0x7FFFFF // Mask to 23 bits + + // Construct the MAC address. + mac := net.HardwareAddr{ + 0x01, 0x00, 0x5E, + byte((lower23 >> 16) & 0xFF), + byte((lower23 >> 8) & 0xFF), + byte(lower23 & 0xFF), + } + return mac, nil + } else { + // Construct MAC Address using the lower 32 bits of the IPv6 address. + ip := addr.As16() + mac := net.HardwareAddr{ + 0x33, 0x33, + ip[12], + ip[13], + ip[14], + ip[15], + } + return mac, nil + } + } + + // Find an IP address on this interface that matches the IP we're pinging. + i.tun.RLock() + var ifcePrefix netip.Prefix + var ifceAddr netip.Addr + for _, prefix := range i.tun.addresses { + // If this prefix is an exact match, this is the IP we use. + // Otherwise, we will accept the IP of the same type. + if prefix.Contains(addr) { + ifcePrefix = prefix + ifceAddr = prefix.Addr() + break + } else if prefix.Addr().Is4() == is4 { + ifcePrefix = prefix + ifceAddr = prefix.Addr() + } + } + i.tun.RUnlock() + + // Set broadcast MAC. + brdMac := net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + + // If this is IPv4, determine if the address provided is broadcast + // and return broadcast mac. + if is4 && ifcePrefix.Contains(ifceAddr) { + // Get the host bits to mask IP to broadcast. + hostBits := 32 - ifcePrefix.Bits() + + // Set all host bits to 1 to calculate the broadcast address. + broadcastAddr := ifceAddr.As4() + for i := 0; i < hostBits; i++ { + broadcastAddr[3-i/8] |= byte(1 << (i % 8)) + } + + // If the provided address is the broadcast, return the broadcast MAC. + if addr == netip.AddrFrom4(broadcastAddr) { + return brdMac, nil + } + } + + // Lock tables, no concurrent requests. + i.tables.Lock() + + // Check arp table for existing entry. + for _, ent := range i.tables.arp { + // If we found an existing entry, return the value. + if ent.Addr == addr { + defer i.tables.Unlock() + // If we're not already updating, check if this entry is expired. + if !ent.Updating && !ent.Expires.IsZero() { + now := time.Now() + // If expired, attempt to update MAC address in background. + if now.After(ent.Expires) { + ent.Updating = true + go i.updateARPFor(addr, brdMac, ifceAddr) + } + } + return ent.MAC, nil + } + } + + // As we did not find an existing entry, we need to make an ARP request. + // Start a channel to receive the ARP event back with the MAC. + c := make(chan net.HardwareAddr) + // Add to the event list. + i.tables.arpEvent[addr] = append(i.tables.arpEvent[addr], c) + // When this function is done, ensure the event channel is removed. + defer func() { + i.tables.Lock() + for p, ch := range i.tables.arpEvent[addr] { + if ch == c { + i.tables.arpEvent[addr] = append(i.tables.arpEvent[addr][:p], i.tables.arpEvent[addr][p+1:]...) + break + } + } + i.tables.Unlock() + }() + + // Unlock the tables to allow ARP replies to add to the tables. + i.tables.Unlock() + + // Get an destination UDP address for the ARP request. + dst := i.GetDestinationFor(brdMac) + if dst == nil { + return nil, fmt.Errorf("no destination to send ARP to") + } + + // Make Ethernet layer for packet. + eth := layers.Ethernet{ + SrcMAC: i.tun.mac, + DstMAC: brdMac, + EthernetType: layers.EthernetTypeARP, + } + + // Make ARP layer for packet. + arp := layers.ARP{ + AddrType: layers.LinkTypeEthernet, + HwAddressSize: 6, + Operation: layers.ARPRequest, + SourceHwAddress: []byte(i.tun.mac), + SourceProtAddress: ifceAddr.AsSlice(), + DstHwAddress: []byte{0, 0, 0, 0, 0, 0}, + DstProtAddress: addr.AsSlice(), + } + // Size and protocol type differs on IPv6 vs IPv4. + if is4 { + arp.Protocol = layers.EthernetTypeIPv4 + arp.ProtAddressSize = 4 + } else { + arp.Protocol = layers.EthernetTypeIPv6 + arp.ProtAddressSize = 16 + } + + // We give 3 ARP request tries, otherwise we timeout. + tries := 0 + for tries < 3 { + tries += 1 + // Try sending packet. + i.SendLayers(dst, ð, &arp) + select { + // If we receive the response, return the value. + case mac := <-c: + return mac, nil + // If we timeout, after 3 seconds, then continue. + case <-time.After(3 * time.Second): + i.log.Debugf("timeout on ARP request for %s with tries %d", addr.String(), tries) + continue + } + } + // If all tries are done, return error. + return nil, fmt.Errorf("unable to get MAC address for %s", addr.String()) +} + +// A job to check for expired arp entries and remove them from the arp table. +func (i *Interface) runARPExpiryJob() { + // Run job every minute. + ticker := time.NewTicker(1 * time.Minute) + for { + // Run the job queue if this interface doesn't close. + select { + case <-ticker.C: + // Lock tables for ARP operations. + i.tables.Lock() + // Get current time to compare against expiry date. + now := time.Now() + // Start with a found entry so the loop runs first. + foundEntry := true + for foundEntry { + // Set to no found entry, so we stop the loop if no entry is found. + foundEntry = false + // Scan arp table for expired entries. + for p, ent := range i.tables.arp { + // If this entry is expired and past 2 minute grace, remove it and set that we found an entry. + if !ent.Expires.IsZero() && now.Before(ent.Expires.Add(120*time.Second)) { + foundEntry = true + i.tables.arp = append(i.tables.arp[:p], i.tables.arp[p+1:]...) + break + } + } + } + // No further expired entries found, unlock the table. + i.tables.Unlock() + case <-i.closed: + return + } + } +} + +// Clears the arp table. +func (i *Interface) FlushARPTable() { + i.tables.Lock() + i.tables.arp = nil + i.tables.Unlock() +} + +// Handle an ARP packet received. +func (i *Interface) HandleARP(arp layers.ARP) { + // If type isn't ethernet, we don't care. + if arp.AddrType != layers.LinkTypeEthernet { + return + } + // If ARP request, we should verify its for our IP. + if arp.Operation == layers.ARPRequest { + // Parse the destination address. + addr, ok := netip.AddrFromSlice(arp.DstProtAddress) + if !ok { + return + } + // Find the address that matches the requested address. + i.tun.RLock() + defer i.tun.RUnlock() + for _, prefix := range i.tun.addresses { + // If the requested address is this one, we should reply. + if prefix.Addr() == addr { + // Get the MAC address and destination to send reply to. + srcMac := net.HardwareAddr(arp.SourceHwAddress) + dst := i.GetDestinationFor(srcMac) + if dst == nil { + return + } + + // Parse the source address. + srcAddr, ok := netip.AddrFromSlice(arp.SourceProtAddress) + if !ok { + return + } + + // Add the ARP entry for the source. + i.AddOrUpdateARP(srcAddr, srcMac) + + // Make an ethernet layer for sending ARP reply. + eth := layers.Ethernet{ + SrcMAC: i.tun.mac, + DstMAC: srcMac, + EthernetType: layers.EthernetTypeARP, + } + + // Make the ARP reply layer. + arpReply := layers.ARP{ + AddrType: arp.AddrType, + Protocol: arp.Protocol, + HwAddressSize: arp.HwAddressSize, + ProtAddressSize: arp.ProtAddressSize, + Operation: layers.ARPReply, + SourceHwAddress: []byte(i.tun.mac), + SourceProtAddress: addr.AsSlice(), + DstHwAddress: srcMac, + DstProtAddress: srcAddr.AsSlice(), + } + + // Send the ARP reply. + i.SendLayers(dst, ð, &arpReply) + } + } + // On ARP reply, we should verify its to us and update table. + } else if arp.Operation == layers.ARPReply { + // If not destined to us, we should stop here. + if !bytes.Equal(i.tun.mac, arp.DstHwAddress) { + i.log.Debugf("Mac doesn't match our MAC: %s", net.HardwareAddr(arp.DstHwAddress)) + return + } + + // Parse the source. + srcMac := net.HardwareAddr(arp.SourceHwAddress) + srcAddr, ok := netip.AddrFromSlice(arp.SourceProtAddress) + if !ok { + return + } + + // Add the source of the ARP reply to the ARP table. + i.AddOrUpdateARP(srcAddr, srcMac) + + // Send event to any ARP reply event listeners. + i.tables.RLock() + chs, ok := i.tables.arpEvent[srcAddr] + if ok { + for _, c := range chs { + c <- srcMac + } + } + i.tables.RUnlock() + } +} + +// Process IPv4 packet. +func (i *Interface) HandleIPv4(eth layers.Ethernet, ip4 layers.IPv4) { + // Verify the destination is us. + if !bytes.Equal(eth.DstMAC, i.tun.mac) { + return + } + + // Pass packet to the interface. + data := append(ip4.Contents, ip4.Payload...) + i.Write(data) +} + +// Process IPv6 packet. +func (i *Interface) HandleIPv6(eth layers.Ethernet, ip6 layers.IPv6) { + // Verify the destination is us. + if !bytes.Equal(eth.DstMAC, i.tun.mac) { + return + } + + // Pass packet to the interface. + data := append(ip6.Contents, ip6.Payload...) + i.Write(data) +} + +// Send a packet to a destination with ethernet layers and bytes to append to encoded packet. +// The packet will be encapsulated in vxlan tunnel. +func (i *Interface) SendLayers(dst *net.UDPAddr, layersToSend ...gopacket.SerializableLayer) { + // Make the VXLAN layer with our VNI. + vxlan := layers.VXLAN{ + ValidIDFlag: true, + VNI: i.vni, + } + + // Setup buffer for encoding the packet. + buf := gopacket.NewSerializeBuffer() + opts := gopacket.SerializeOptions{ + FixLengths: true, + ComputeChecksums: true, + } + + // Encode packet with the vxlan and other provided layers. + err := gopacket.SerializeLayers(buf, opts, append([]gopacket.SerializableLayer{&vxlan}, layersToSend...)...) + if err != nil { + i.log.Errorf("failed to encode layers: %v", err) + } + + // Send packet to destination. + _, err = i.l.WriteTo(buf.Bytes(), dst) + if err != nil { + i.log.Errorf("failed to send layers: %v", err) + } +} + +// Passsthru to tun write. +func (i *Interface) Write(b []byte) (int, error) { + return i.tun.device.Write(b) +} + +// Listen to events from the tun device. +func (i *Interface) eventReader() { + i.log.Debug("event worker - started") + + // For each event received, process it. + for event := range i.tun.device.Events() { + // If event is an MTU change, update our MTU. + if event&tun.EventMTUUpdate != 0 { + // Get the device's current MTU. + mtu, err := i.tun.device.MTU() + if err != nil { + i.log.Errorf("failed to load updated MTU of device: %v", err) + continue + } + + // If the MTU is negative, that isn't valid. + if mtu < 0 { + i.log.Errorf("MTU not updated to negative value: %v", mtu) + continue + } + + // Determine if the MTU set is larger than our maximum based on listern's max size. + var tooLarge string + maxMTU := i.l.MaxMessageSize() - 50 + if mtu > maxMTU { + tooLarge = fmt.Sprintf(" (too large, capped at %v)", maxMTU) + mtu = maxMTU + } + + // Update the MTU, getting the prior MTU. + old := i.tun.mtu.Swap(int32(mtu)) + + // If the MTU changed, we should update the buffer size in the packet reader. + if int(old) != mtu { + go func() { + i.tun.mtuc <- mtu + }() + i.log.Debugf("MTU updated: %v%s", mtu, tooLarge) + } + } + + // If the interface is going up, we should update our state. + if event&tun.EventUp != 0 { + i.log.Debug("Interface up requested") + i.Up() + } + + // If the interface is going down, we should update our state. + if event&tun.EventDown != 0 { + i.log.Debug("Interface down requested") + i.Down() + } + } + + i.log.Debug("event worker - stopped") +} + +// Read packets from the tun device, and process them. +func (i *Interface) packetReader() { + // When stopping, we want to ensure this packet reader stopped before we release the interface. + i.state.stopping.Add(1) + defer func() { + i.log.Debug("TUN packet reader - stopped") + i.state.stopping.Done() + }() + + // Setup packet parsers. + var ip4 layers.IPv4 + ip4Parser := gopacket.NewDecodingLayerParser(layers.LayerTypeIPv4, &ip4) + ip4Parser.IgnoreUnsupported = true + var ip6 layers.IPv6 + ip6Parser := gopacket.NewDecodingLayerParser(layers.LayerTypeIPv4, &ip6) + ip6Parser.IgnoreUnsupported = true + decoded := []gopacket.LayerType{} + + // Setup buffer with current MTU value. + i.log.Debug("TUN packet reader - started") + buf := make([]byte, i.MTU()) + + // Start reading from the tun device. + for { + n, err := i.tun.device.Read(buf) + + // If packet received data, parse it. + if n > 1 { + packet := buf[:n] + switch packet[0] >> 4 { + case 4: + // Parse IPv4 packet. + decoded = nil + err := ip4Parser.DecodeLayers(packet, &decoded) + if err == nil { + // Parse the IP address for the destination. + addr, ok := netip.AddrFromSlice(ip4.DstIP) + if !ok { + continue + } + + // Find the MAC address for the IP. + mac, err := i.GetMacFor(addr) + if err != nil { + i.log.Error(err) + continue + } + + // Get the UDP destination for the MAC address. + dst := i.GetDestinationFor(mac) + if dst == nil { + continue + } + + // Setup ethernet layer. + eth := layers.Ethernet{ + SrcMAC: i.tun.mac, + DstMAC: mac, + EthernetType: layers.EthernetTypeIPv4, + } + + // Setup upper layer masquerade. + masq := Masquerade{ + MData: ip4.Payload, + MLayerType: ip4.Protocol.LayerType(), + } + + // Send data to destination. + i.SendLayers(dst, ð, &ip4, &masq) + } + case 6: + // Pase IPv6 packet. + decoded = nil + err := ip6Parser.DecodeLayers(packet, &decoded) + if err == nil { + // Parse the IP address for the destination. + addr, ok := netip.AddrFromSlice(ip6.DstIP) + if !ok { + continue + } + + // Find the MAC address for the IP. + mac, err := i.GetMacFor(addr) + if err != nil { + i.log.Error(err) + continue + } + + // Get the UDP destination for the MAC address. + dst := i.GetDestinationFor(mac) + if dst == nil { + continue + } + + // Setup ethernet layer. + eth := layers.Ethernet{ + SrcMAC: i.tun.mac, + DstMAC: mac, + EthernetType: layers.EthernetTypeIPv6, + } + + // Setup upper layer masquerade. + masq := Masquerade{ + MData: ip6.Payload, + MLayerType: ip6.NextLayerType(), + } + + // Send data to destination. + i.SendLayers(dst, ð, &ip6, &masq) + } + } + } + + // If we received an error, check if we should stop. + if err != nil { + // If the error is relating to segments, just continue. + if errors.Is(err, tun.ErrTooManySegments) { + i.log.Debugf("dropped some packets from multi-segment read: %v", err) + continue + } + // If this device isn't closed, we should close it for other errors. + if !i.IsClosed() { + // Log error if its not an closed error. + if !errors.Is(err, os.ErrClosed) { + i.log.Errorf("failed to read packet from TUN device: %v", err) + } + // Close this interface. + go i.Close() + } + // Stop the packet reader here. + return + } + + // If the MTU has a change request, make a new buffer. + select { + case newMTU, ok := <-i.tun.mtuc: + if ok { + buf = make([]byte, newMTU) + } + default: + } + } +} diff --git a/interface_cmd.go b/interface_cmd.go new file mode 100644 index 0000000..bac6220 --- /dev/null +++ b/interface_cmd.go @@ -0,0 +1,595 @@ +package main + +import ( + "context" + "fmt" + "os" + "time" + + pb "github.com/grmrgecko/virtual-vxlan/vxlan" + "github.com/jedib0t/go-pretty/v6/table" +) + +// Command to list interfaces on an listener. +type InterfaceListCmd struct{} + +func (a *InterfaceListCmd) Run(l *ListenerCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Pull list of interface on the requested listener. + listener := &pb.ListenerRequestWithName{Name: l.name()} + r, err := c.ListInterfaces(ctx, listener) + if err != nil { + return + } + + // Setup table for interfaces. + t := table.NewWriter() + t.SetOutputMirror(os.Stdout) + t.AppendHeader(table.Row{"Name", "VNI", "MTU", "Permanent"}) + + // Add row for each interface. + for _, ifce := range r.Interfaces { + t.AppendRow([]interface{}{ifce.Name, ifce.Vni, ifce.Mtu, ifce.Permanent}) + } + + // Render the table. + t.Render() + return +} + +// Command to add interface to an listener. +type InterfaceAddCmd struct { + VNI uint32 `help:"VXLAN VNI" required:""` + MTU int32 `help:"MTU of interface, 0 will result in calculated value" default:"0"` + Permanent bool `help:"Should listener be saved to disk?"` +} + +func (a *InterfaceAddCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Setup interface request. + ifce := &pb.AddInterfaceRequest{ + ListenerName: l.name(), + Name: i.name(), + Vni: a.VNI, + Mtu: a.MTU, + Permanent: a.Permanent, + } + + // Attempt to add the interface. + _, err = c.AddInterface(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Added interface to listener.") + return +} + +// Command to remove an interface on an listener. +type InterfaceRemoveCmd struct{} + +func (a *InterfaceRemoveCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Setup interface request. + ifce := &pb.InterfaceRequestWithName{ + ListenerName: l.name(), + Name: i.name(), + } + + // Attempt to add the interface. + _, err = c.RemoveInterface(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Removed interface from listener.") + return +} + +// Command to set interface's MTU. +type InterfaceSetMTUCmd struct { + MTU int32 `help:"Interface MTU value (0 will result in calculated value)" default:"0"` +} + +func (a *InterfaceSetMTUCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to update interface's MTU. + ifce := &pb.InterfaceMTURequest{ + ListenerName: l.name(), + Name: i.name(), + Mtu: a.MTU, + } + _, err = c.SetInterfaceMTU(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Updated MTU.") + return +} + +// Command to set interface's MAC address. +type InterfaceSetMACAddressCmd struct { + MAC string `help:"The MAC Address to set"` +} + +func (a *InterfaceSetMACAddressCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to update interface's MAC address. + ifce := &pb.InterfaceMACAddressRequest{ + ListenerName: l.name(), + Name: i.name(), + Mac: a.MAC, + } + _, err = c.SetInterfaceMACAddress(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Updated MAC Address.") + return +} + +// Command to get interface's MAC address. +type InterfaceGetMACAddressCmd struct{} + +func (a *InterfaceGetMACAddressCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to get interface's MAC address. + ifce := &pb.InterfaceRequestWithName{ + ListenerName: l.name(), + Name: i.name(), + } + r, err := c.GetInterfaceMACAddress(ctx, ifce) + if err != nil { + return + } + + // Setup table for MAC listing. + t := table.NewWriter() + t.SetOutputMirror(os.Stdout) + t.AppendHeader(table.Row{"MAC Address"}) + + // Add row for the MAC address. + t.AppendRow([]interface{}{r.Mac}) + + // Render the table. + t.Render() + return +} + +// Command to set interface's IP addresses. +type InterfaceSetIPAddressesCmd struct { + IPAddress []string `help:"The IP address(es) to set"` +} + +func (a *InterfaceSetIPAddressesCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to update interface's IP address(es). + ifce := &pb.InterfaceIPAddressesRequest{ + ListenerName: l.name(), + Name: i.name(), + IpAddress: a.IPAddress, + } + _, err = c.SetInterfaceIPAddresses(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Updated IP Address(es).") + return +} + +// Command to get interface's MAC Address. +type InterfaceGetIPAddressesCmd struct{} + +func (a *InterfaceGetIPAddressesCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to get interface's IP address(es). + ifce := &pb.InterfaceRequestWithName{ + ListenerName: l.name(), + Name: i.name(), + } + r, err := c.GetInterfaceIPAddresses(ctx, ifce) + if err != nil { + return + } + + // Setup table for IP list. + t := table.NewWriter() + t.SetOutputMirror(os.Stdout) + t.AppendHeader(table.Row{"IP Address"}) + + // Add row for the IP address(es). + for _, ipAddress := range r.IpAddress { + t.AppendRow([]interface{}{ipAddress}) + } + + // Render the table. + t.Render() + return +} + +// Command to add an MAC entry to an interface. +type InterfaceAddMACEntryCmd struct { + MAC string `help:"MAC address to route (00:00:00:00:00:00 is treated as default route)" default:"00:00:00:00:00:00"` + Destination string `help:"The IP address to send vxlan traffic" required:""` + Permanent bool `help:"Should the MAC entry be saved to disk?"` +} + +func (a *InterfaceAddMACEntryCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to add MAC entry to an interface. + ifce := &pb.InterfaceMacEntryRequest{ + ListenerName: l.name(), + Name: i.name(), + Mac: a.MAC, + Destination: a.Destination, + Permanent: a.Permanent, + } + _, err = c.InterfaceAddMACEntry(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Added MAC entry.") + return +} + +// Command to remove an MAC entry from an interface. +type InterfaceRemoveMACEntryCmd struct { + MAC string `help:"MAC address" required:""` + Destination string `help:"The IP address" required:""` +} + +func (a *InterfaceRemoveMACEntryCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to remove an MAC entry from an interface. + ifce := &pb.InterfaceRemoveMacEntryRequest{ + ListenerName: l.name(), + Name: i.name(), + Mac: a.MAC, + Destination: a.Destination, + } + _, err = c.InterfaceRemoveMACEntry(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Removed MAC entry.") + return +} + +// Command to get MAC entries on an interface. +type InterfaceGetMACEntriesCmd struct{} + +func (a *InterfaceGetMACEntriesCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to get MAC entries on an interface. + ifce := &pb.InterfaceRequestWithName{ + ListenerName: l.name(), + Name: i.name(), + } + r, err := c.InterfaceGetMACEntries(ctx, ifce) + if err != nil { + return + } + + // Setup table for MAC entries. + t := table.NewWriter() + t.SetOutputMirror(os.Stdout) + t.AppendHeader(table.Row{"MAC Address", "Destination", "Permanent"}) + + // Add rows for entries. + for _, ent := range r.Entries { + t.AppendRow([]interface{}{ent.Mac, ent.Destination, ent.Permanent}) + } + + // Render the table. + t.Render() + return +} + +// Command to remove all mac entries from an interface. +type InterfaceFlushMACTableCmd struct{} + +func (a *InterfaceFlushMACTableCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to flush the MAC entry table on an interface. + ifce := &pb.InterfaceRequestWithName{ + ListenerName: l.name(), + Name: i.name(), + } + _, err = c.InterfaceFlushMACTable(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Flushed MAC entry table.") + return +} + +// Command to add an MAC entry to an interface. +type InterfaceAddStaticARPEntryCmd struct { + Address string `help:"IP address" required:""` + MAC string `help:"MAC address" required:""` + Permanent bool `help:"Should the ARP entry be saved to disk?"` +} + +func (a *InterfaceAddStaticARPEntryCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to add an static ARP entry to an interface. + ifce := &pb.InterfaceARPEntryRequest{ + ListenerName: l.name(), + Name: i.name(), + Address: a.Address, + Mac: a.MAC, + Permanent: a.Permanent, + } + _, err = c.InterfaceAddStaticARPEntry(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Added static ARP entry.") + return +} + +// Command to remove an MAC entry from an interface. +type InterfaceRemoveARPEntryCmd struct { + Address string `help:"IP address" required:""` +} + +func (a *InterfaceRemoveARPEntryCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to remove an ARP entry from a table. + ifce := &pb.InterfaceRemoveARPEntryRequest{ + ListenerName: l.name(), + Name: i.name(), + Address: a.Address, + } + _, err = c.InterfaceRemoveARPEntry(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Removed ARP entry.") + return +} + +// Command to get MAC entries on an interface. +type InterfaceGetARPEntriesCmd struct{} + +func (a *InterfaceGetARPEntriesCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt tp update listener's max message size. + ifce := &pb.InterfaceRequestWithName{ + ListenerName: l.name(), + Name: i.name(), + } + r, err := c.InterfaceGetARPEntries(ctx, ifce) + if err != nil { + return + } + + // Setup table for interfaces. + t := table.NewWriter() + t.SetOutputMirror(os.Stdout) + t.AppendHeader(table.Row{"IP Address", "MAC Address", "Expires", "Permanent"}) + + // Add row for the IP address(es). + for _, ent := range r.Entries { + t.AppendRow([]interface{}{ent.Address, ent.Mac, ent.Expires, ent.Permanent}) + } + + // Render the table. + t.Render() + return +} + +// Command to remove all mac entries from an interface. +type InterfaceFlushARPTableCmd struct{} + +func (a *InterfaceFlushARPTableCmd) Run(l *ListenerCmd, i *InterfaceCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt tp update listener's max message size. + ifce := &pb.InterfaceRequestWithName{ + ListenerName: l.name(), + Name: i.name(), + } + _, err = c.InterfaceFlushARPTable(ctx, ifce) + if err != nil { + return + } + + fmt.Println("Flushed ARP entry table.") + return +} + +// Commands managing listeners. +type InterfaceCmd struct { + List InterfaceListCmd `cmd:""` + Name struct { + Name string `arg:"" help:"Interface name" required:""` + Add InterfaceAddCmd `cmd:""` + Remove InterfaceRemoveCmd `cmd:""` + SetMTU InterfaceSetMTUCmd `cmd:""` + SetMACAddress InterfaceSetMACAddressCmd `cmd:""` + GetMACAddress InterfaceGetMACAddressCmd `cmd:""` + SetIPAddresses InterfaceSetIPAddressesCmd `cmd:""` + GetIPAddresses InterfaceGetIPAddressesCmd `cmd:""` + AddMACEntry InterfaceAddMACEntryCmd `cmd:""` + RemoveMACEntry InterfaceRemoveMACEntryCmd `cmd:""` + GetMACEntries InterfaceGetMACEntriesCmd `cmd:""` + FlushMACTable InterfaceFlushMACTableCmd `cmd:""` + AddStaticARPEntry InterfaceAddStaticARPEntryCmd `cmd:""` + RemoveARPEntry InterfaceRemoveARPEntryCmd `cmd:""` + GetARPEntries InterfaceGetARPEntriesCmd `cmd:""` + FlushARPTable InterfaceFlushARPTableCmd `cmd:""` + } `arg:""` +} + +// Returns the interface name. +func (i *InterfaceCmd) name() string { + return i.Name.Name +} diff --git a/interface_grpc.go b/interface_grpc.go new file mode 100644 index 0000000..eeb91ae --- /dev/null +++ b/interface_grpc.go @@ -0,0 +1,395 @@ +package main + +import ( + "context" + "fmt" + "net" + "net/netip" + + pb "github.com/grmrgecko/virtual-vxlan/vxlan" +) + +// List interfaces on a listener. +func (s *GRPCServer) ListInterfaces(ctx context.Context, in *pb.ListenerRequestWithName) (*pb.ListInterfacesReply, error) { + reply := new(pb.ListInterfacesReply) + app.Net.Lock() + for _, listener := range app.Net.Listeners { + if listener.Name == in.Name { + listener.net.RLock() + for _, iface := range listener.net.interfaces { + ifce := &pb.Interface{ + Name: iface.Name(), + Vni: iface.VNI(), + Mtu: int32(iface.MTU()), + Permanent: iface.Permanent, + } + reply.Interfaces = append(reply.Interfaces, ifce) + } + listener.net.RUnlock() + break + } + } + app.Net.Unlock() + return reply, nil +} + +// Add interface to the listener. +func (s *GRPCServer) AddInterface(ctx context.Context, in *pb.AddInterfaceRequest) (*pb.Empty, error) { + // Find listener. + list, err := s.FindListener(in.ListenerName) + if err != nil { + return nil, err + } + + // Add interface to listener. + _, err = NewInterface(in.Name, in.Vni, int(in.Mtu), list, in.Permanent) + if err != nil { + return nil, err + } + + return new(pb.Empty), nil +} + +// Find interface on listener. +func (s *GRPCServer) FindInterface(listenerName, name string) (list *Listener, ifce *Interface, err error) { + // Find listener + list, err = s.FindListener(listenerName) + if err != nil { + return nil, nil, err + } + + // Find interface. + list.net.RLock() + for _, iface := range list.net.interfaces { + if iface.Name() == name { + ifce = iface + break + } + } + list.net.RUnlock() + + // If no interface found, error. + if ifce == nil { + return nil, nil, fmt.Errorf("no interface with name: %s", name) + } + return +} + +// Remove interface from the listener. +func (s *GRPCServer) RemoveInterface(ctx context.Context, in *pb.InterfaceRequestWithName) (*pb.Empty, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Close the interface. + err = ifce.Close() + if err != nil { + return nil, err + } + return new(pb.Empty), nil +} + +// Set interface's MTU. +func (s *GRPCServer) SetInterfaceMTU(ctx context.Context, in *pb.InterfaceMTURequest) (*pb.Empty, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Set the MTU for the interface. + ifce.SetMTU(int(in.Mtu)) + + return new(pb.Empty), nil +} + +// Get interface's MTU. +func (s *GRPCServer) GetInterfaceMTU(ctx context.Context, in *pb.InterfaceRequestWithName) (*pb.InterfaceMTUReply, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Get the MTU for the interface. + reply := &pb.InterfaceMTUReply{ + Mtu: int32(ifce.MTU()), + } + + return reply, nil +} + +// Set interface's MAC address. +func (s *GRPCServer) SetInterfaceMACAddress(ctx context.Context, in *pb.InterfaceMACAddressRequest) (*pb.Empty, error) { + // Parse MAC Address. + mac, err := net.ParseMAC(in.Mac) + if err != nil { + return nil, fmt.Errorf("unable to parse MAC address: %v", err) + } + + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Set the MAC Address for the interface. + err = ifce.SetMACAddress(mac) + if err != nil { + return nil, err + } + + return new(pb.Empty), nil +} + +// Get interface's MAC address. +func (s *GRPCServer) GetInterfaceMACAddress(ctx context.Context, in *pb.InterfaceRequestWithName) (*pb.InterfaceMACAddressReply, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Get the MAC address of the interface. + mac, err := ifce.GetMACAddress() + if err != nil { + return nil, err + } + + // Set reply with MAC address. + reply := &pb.InterfaceMACAddressReply{ + Mac: mac.String(), + } + + return reply, nil +} + +// Set interface's IP addresses. +func (s *GRPCServer) SetInterfaceIPAddresses(ctx context.Context, in *pb.InterfaceIPAddressesRequest) (*pb.Empty, error) { + // Parse provided IP addresses. + var prefixes []netip.Prefix + for _, ipAddress := range in.IpAddress { + prefix, err := netip.ParsePrefix(ipAddress) + if err != nil { + return nil, fmt.Errorf("failed to parse IP Address %s: %v", ipAddress, err) + } + prefixes = append(prefixes, prefix) + } + + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Set the IP Addresses for the interface. + err = ifce.SetIPAddresses(prefixes) + if err != nil { + return nil, err + } + + return new(pb.Empty), nil +} + +// Get interface's IP addresses. +func (s *GRPCServer) GetInterfaceIPAddresses(ctx context.Context, in *pb.InterfaceRequestWithName) (*pb.InterfaceIPAddressesReply, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Get the IP address(es) of the interface. + prefixes, err := ifce.GetIPAddresses() + if err != nil { + return nil, err + } + + // Set reply with IP address(es). + reply := new(pb.InterfaceIPAddressesReply) + for _, prefix := range prefixes { + reply.IpAddress = append(reply.IpAddress, prefix.String()) + } + + return reply, nil +} + +// Add MAC entry to an interface. +func (s *GRPCServer) InterfaceAddMACEntry(ctx context.Context, in *pb.InterfaceMacEntryRequest) (*pb.Empty, error) { + // Parse MAC Address. + mac, err := net.ParseMAC(in.Mac) + if err != nil { + return nil, fmt.Errorf("unable to parse MAC address: %v", err) + } + + // Parse destination + dst := net.ParseIP(in.Destination) + if dst == nil { + return nil, fmt.Errorf("unable to parse IP address") + } + + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Add the MAC entry. + err = ifce.AddMACEntry(mac, dst, in.Permanent) + if err != nil { + return nil, err + } + + return new(pb.Empty), nil +} + +// Remove MAC entry from an interface. +func (s *GRPCServer) InterfaceRemoveMACEntry(ctx context.Context, in *pb.InterfaceRemoveMacEntryRequest) (*pb.Empty, error) { + // Parse MAC Address. + mac, err := net.ParseMAC(in.Mac) + if err != nil { + return nil, fmt.Errorf("unable to parse MAC address: %v", err) + } + + // Parse destination + dst := net.ParseIP(in.Destination) + if dst == nil { + return nil, fmt.Errorf("unable to parse IP address") + } + + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Remove the MAC entry. + err = ifce.RemoveMACEntry(mac, dst) + if err != nil { + return nil, err + } + + return new(pb.Empty), nil +} + +// Get MAC entries on interface. +func (s *GRPCServer) InterfaceGetMACEntries(ctx context.Context, in *pb.InterfaceRequestWithName) (*pb.InterfaceMacEntryReply, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Get MAC entries and make reply. + entries := ifce.GetMACEntries() + reply := new(pb.InterfaceMacEntryReply) + for _, entry := range entries { + ent := &pb.MacEntry{ + Mac: entry.MAC.String(), + Destination: entry.Dst.IP.String(), + Permanent: entry.Permanent, + } + reply.Entries = append(reply.Entries, ent) + } + + return reply, nil +} + +// Flush MAC table on interface. +func (s *GRPCServer) InterfaceFlushMACTable(ctx context.Context, in *pb.InterfaceRequestWithName) (*pb.Empty, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Flush MAC table. + ifce.FlushMACTable() + return new(pb.Empty), nil +} + +// Add static ARP entry to an interface. +func (s *GRPCServer) InterfaceAddStaticARPEntry(ctx context.Context, in *pb.InterfaceARPEntryRequest) (*pb.Empty, error) { + // Parse IP address + addr, err := netip.ParseAddr(in.Address) + if err != nil { + return nil, fmt.Errorf("unable to parse IP address: %v", err) + } + + // Parse MAC Address. + mac, err := net.ParseMAC(in.Mac) + if err != nil { + return nil, fmt.Errorf("unable to parse MAC address: %v", err) + } + + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Add the ARP entry. + ifce.AddStaticARPEntry(addr, mac, in.Permanent) + return new(pb.Empty), nil +} + +// Remove ARP entry from an interface. +func (s *GRPCServer) InterfaceRemoveARPEntry(ctx context.Context, in *pb.InterfaceRemoveARPEntryRequest) (*pb.Empty, error) { + // Parse IP address + addr, err := netip.ParseAddr(in.Address) + if err != nil { + return nil, fmt.Errorf("unable to parse IP address: %v", err) + } + + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Remove the ARP entry. + err = ifce.RemoveARPEntry(addr) + if err != nil { + return nil, err + } + return new(pb.Empty), nil +} + +// Get ARP entries on interface. +func (s *GRPCServer) InterfaceGetARPEntries(ctx context.Context, in *pb.InterfaceRequestWithName) (*pb.InterfaceArpEntryReply, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Get MAC entries and make reply. + entries := ifce.GetARPEntries() + reply := new(pb.InterfaceArpEntryReply) + for _, entry := range entries { + ent := &pb.ArpEntry{ + Address: entry.Addr.String(), + Mac: entry.MAC.String(), + Expires: entry.Expires.String(), + Permanent: entry.Permanent, + } + reply.Entries = append(reply.Entries, ent) + } + + return reply, nil +} + +// Flush ARP table on interface. +func (s *GRPCServer) InterfaceFlushARPTable(ctx context.Context, in *pb.InterfaceRequestWithName) (*pb.Empty, error) { + // Find interface. + _, ifce, err := s.FindInterface(in.ListenerName, in.Name) + if err != nil { + return nil, err + } + + // Flush ARP table. + ifce.FlushARPTable() + return new(pb.Empty), nil +} diff --git a/listener.go b/listener.go new file mode 100644 index 0000000..c3c8a76 --- /dev/null +++ b/listener.go @@ -0,0 +1,257 @@ +package main + +import ( + "errors" + "fmt" + "net" + "sync" + + "github.com/google/gopacket" + "github.com/google/gopacket/layers" + log "github.com/sirupsen/logrus" +) + +// The base of a vxlan connection is the port listener. +// The port listener listens for vxlan packets on a port, +// and it passes matching VNI values with interfaces. +// Interfaces are added to the listener, which processes +// vxlan packets. +type Listener struct { + net struct { + stopping sync.WaitGroup + addr *net.UDPAddr + is4 bool + maxMessageSize int + maxMessageSizeC chan int + conn *net.UDPConn + promisc *Promiscuous + interfaces []*Interface + sync.RWMutex + } + + Name string + Permanent bool + closed chan struct{} + log *log.Entry +} + +// Check if IP address is all zero. +func isZeroAddr(ip net.IP) bool { + for _, b := range ip { + if b != 0x0 { + return false + } + } + return true +} + +// Make a new listener on the specified address. This +// listener is added to the app listener list, and errors +// on existing listeners for the specified address. +func NewListener(name, address string, maxMessageSize int, perm bool) (l *Listener, err error) { + // Verify the specified address is valid. + addr, err := net.ResolveUDPAddr("udp", address) + if err != nil { + return + } + is4 := addr.IP.To4() != nil + + // Verify no listeners exist with this address. + app.Net.Lock() + defer app.Net.Unlock() + for _, listener := range app.Net.Listeners { + if listener.PrettyName() == addr.String() { + return nil, fmt.Errorf("listener already exists with address %s", addr.String()) + } + if listener.Name == name { + return nil, fmt.Errorf("listener already exists with name %s", name) + } + } + + // On Windows, there is no public way to configure hardware vxlan offloading. + // This in term filters packets that are destined to non-broadcast MAC addresses + // in vxlan packets. Which prevents us from receiving the packets, so we set the + // interface to promiscuous mode to allow us to receive packets. We can only do + // this if the IP address provided is an absolute address. + var promisc *Promiscuous + if !isZeroAddr(addr.IP) { + promisc, err = SetInterfacePromiscuous(addr.IP) + if err != nil { + return + } + } + + // Start listening on the specified address. + conn, err := net.ListenUDP("udp", addr) + if err != nil { + return + } + + // Save listener details. + l = new(Listener) + l.Name = name + l.net.addr = addr + l.net.is4 = is4 + l.net.maxMessageSize = maxMessageSize + l.net.maxMessageSizeC = make(chan int) + l.net.conn = conn + l.net.promisc = promisc + l.log = log.WithFields(log.Fields{ + "listener": addr.String(), + }) + l.closed = make(chan struct{}) + l.Permanent = perm + app.Net.Listeners = append(app.Net.Listeners, l) + + // Start reading packets on the listener. + go l.packetReader() + + // Inform that we started a listern. + l.log.Print("Listener started.") + return +} + +// Get the current maximum message size. +func (l *Listener) MaxMessageSize() int { + l.net.RLock() + defer l.net.RUnlock() + return l.net.maxMessageSize +} + +// Set the maximum message size to a new value. +func (l *Listener) SetMaxMessageSize(size int) { + if size <= 1 { + return + } + l.net.Lock() + l.net.maxMessageSize = size + l.net.Unlock() + go func() { + l.net.maxMessageSizeC <- size + }() +} + +// Close the listener, and its interfaces. +func (l *Listener) Close() (err error) { + // Ensure proper multi tasking. + l.net.Lock() + l.log.Debug("Listener is closing.") + + // Close the connection. + err = l.net.conn.Close() + if l.net.promisc != nil { + l.net.promisc.Close() + } + close(l.closed) + + // Wait for packet readers to stop. + l.net.stopping.Wait() + + // Remove self from app. + app.Net.Lock() + defer app.Net.Unlock() + for i, listener := range app.Net.Listeners { + if listener == l { + app.Net.Listeners = append(app.Net.Listeners[:i], app.Net.Listeners[i+1:]...) + break + } + } + + // The interfaces will be acquiring lock here while closing. + l.net.Unlock() + for len(l.net.interfaces) >= 1 { + l.net.interfaces[0].Close() + } + + l.log.Print("Listener closed.") + return +} + +// Get listener name. +func (l *Listener) PrettyName() string { + return l.net.addr.String() +} + +// Get listener address. +func (l *Listener) Addr() net.Addr { + return l.net.addr +} + +// Read packets and parse. +func (l *Listener) packetReader() { + // When stopping, we need to wait for this packet reader to finish. + l.net.stopping.Add(1) + defer func() { + l.log.Debug("packet reader - stopped") + l.net.stopping.Done() + }() + + // Setup packet decoder. + var vxlan layers.VXLAN + var eth layers.Ethernet + var ip4 layers.IPv4 + var ip6 layers.IPv6 + var arp layers.ARP + parser := gopacket.NewDecodingLayerParser(layers.LayerTypeVXLAN, &vxlan, ð, &ip4, &ip6, &arp) + parser.IgnoreUnsupported = true + var decoded []gopacket.LayerType + + // Start reading packets, with current buffer size. + l.log.Debug("packet reader - started") + buf := make([]byte, l.net.maxMessageSize) + for { + // Read packet. + n, err := l.net.conn.Read(buf) + if err != nil { + if errors.Is(err, net.ErrClosed) { + break + } + l.log.Errorf("received error reading from listener: %v", err) + } + + // Only process packets larger than a vxlan header. + if n > 38 { + // Attempt to parse vxlan and its layers, up to IP and ARP. + // Parsing any further is a waste of processing power. + decoded = nil + packet := buf[:n] + err = parser.DecodeLayers(packet, &decoded) + + // If we successfully parsed a packet, route it accordingly. + if err == nil { + // To ensure the interfaces do not change as we're handling the packet, lock it. + l.net.RLock() + for _, ifce := range l.net.interfaces { + // If this interface has the decoded VNI, pass the packet to it. + if ifce.vni == vxlan.VNI { + // Depending on what layer type was decoded, pass to the interface. + for _, layerType := range decoded { + if layerType == layers.LayerTypeARP { + ifce.HandleARP(arp) + } else if layerType == layers.LayerTypeIPv4 { + ifce.HandleIPv4(eth, ip4) + } else if layerType == layers.LayerTypeIPv6 { + ifce.HandleIPv6(eth, ip6) + } + } + } + } + l.net.RUnlock() + } + } + + // If the max message size has a change request, make a new buffer and save change. + select { + case newSize, ok := <-l.net.maxMessageSizeC: + if ok { + buf = make([]byte, newSize) + } + default: + } + } +} + +// Write data to destination. +func (l *Listener) WriteTo(b []byte, addr *net.UDPAddr) (int, error) { + return l.net.conn.WriteTo(b, addr) +} diff --git a/listener_cmd.go b/listener_cmd.go new file mode 100644 index 0000000..07163ff --- /dev/null +++ b/listener_cmd.go @@ -0,0 +1,164 @@ +package main + +import ( + "context" + "fmt" + "os" + "time" + + pb "github.com/grmrgecko/virtual-vxlan/vxlan" + "github.com/jedib0t/go-pretty/v6/table" +) + +// Command to list listeners +type ListenerListCmd struct{} + +func (a *ListenerListCmd) Run() (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Read listener list. + r, err := c.ListListeners(ctx, &pb.Empty{}) + if err != nil { + return + } + + // Verify there are listeners. + if len(r.Listeners) == 0 { + fmt.Println("No listeners running.") + return + } + + // Setup table for listener list. + t := table.NewWriter() + t.SetOutputMirror(os.Stdout) + t.AppendHeader(table.Row{"Name", "Address", "Max Message Size", "Permanent"}) + + // Add rows for each listener. + for _, list := range r.Listeners { + t.AppendRow([]interface{}{list.Name, list.Address, list.MaxMessageSize, list.Permanent}) + } + + // Print the table. + t.Render() + return +} + +// Command to add an listener. +type ListenerAddCmd struct { + Address string `help:"Bind address (':4789' or '10.0.0.2:4789')" required:""` + MaxMessageSize int32 `help:"Max UDP message size" default:"1500"` + Permanent bool `help:"Should listener be saved to disk?"` +} + +func (a *ListenerAddCmd) Run(l *ListenerCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Setup listener config. + listener := &pb.Listener{ + Name: l.name(), + Address: a.Address, + MaxMessageSize: a.MaxMessageSize, + Permanent: a.Permanent, + } + + // Attempt to add an listener. + _, err = c.AddListener(ctx, listener) + if err != nil { + return + } + + fmt.Println("Added listener.") + return +} + +// Command to remove an listener. +type ListenerRemoveCmd struct{} + +func (a *ListenerRemoveCmd) Run(l *ListenerCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt to remove the listener. + listener := &pb.ListenerRequestWithName{Name: l.name()} + _, err = c.RemoveListener(ctx, listener) + if err != nil { + return + } + + fmt.Println("Removed listener.") + return +} + +// Command to set listener's max message size. +type ListenerSetMaxMessageSizeCmd struct { + Size int32 `help:"Max UDP message size" default:"1500"` +} + +func (a *ListenerSetMaxMessageSizeCmd) Run(l *ListenerCmd) (err error) { + // Connect to GRPC. + c, conn, err := NewGRPCClient() + if err != nil { + return + } + defer conn.Close() + + // Setup call timeout of 10 seconds. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Attempt tp update listener's max message size. + listener := &pb.ListenerMaxMessageSizeRequest{ + Name: l.name(), + Size: a.Size, + } + _, err = c.SetListenerMaxMessageSize(ctx, listener) + if err != nil { + return + } + + fmt.Println("Updated max message size.") + return +} + +// Commands managing listeners. +type ListenerCmd struct { + List ListenerListCmd `cmd:""` + Name struct { + Name string `arg:"" help:"Listener name" required:""` + Add ListenerAddCmd `cmd:""` + Remove ListenerRemoveCmd `cmd:""` + SetMaxMessageSize ListenerSetMaxMessageSizeCmd `cmd:""` + Interface InterfaceCmd `cmd:""` + } `arg:""` +} + +// Returns the listener name. +func (l *ListenerCmd) name() string { + return l.Name.Name +} diff --git a/listener_grpc.go b/listener_grpc.go new file mode 100644 index 0000000..d51cfad --- /dev/null +++ b/listener_grpc.go @@ -0,0 +1,97 @@ +package main + +import ( + "context" + "fmt" + + pb "github.com/grmrgecko/virtual-vxlan/vxlan" +) + +// Provide list of listeners. +func (s *GRPCServer) ListListeners(ctx context.Context, in *pb.Empty) (*pb.ListListenersReply, error) { + reply := new(pb.ListListenersReply) + app.Net.Lock() + for _, listener := range app.Net.Listeners { + list := &pb.Listener{ + Name: listener.Name, + Address: listener.PrettyName(), + MaxMessageSize: int32(listener.net.maxMessageSize), + Permanent: listener.Permanent, + } + reply.Listeners = append(reply.Listeners, list) + } + app.Net.Unlock() + return reply, nil +} + +// Add listener. +func (s *GRPCServer) AddListener(ctx context.Context, in *pb.Listener) (*pb.Empty, error) { + _, err := NewListener(in.Name, in.Address, int(in.MaxMessageSize), in.Permanent) + if err != nil { + return nil, err + } + return new(pb.Empty), nil +} + +// Find listener. +func (s *GRPCServer) FindListener(name string) (list *Listener, err error) { + // Find existing listener. + app.Net.Lock() + for _, listener := range app.Net.Listeners { + if listener.Name == name { + list = listener + break + } + } + app.Net.Unlock() + + // If no listener found, error. + if list == nil { + return nil, fmt.Errorf("no listener with name: %s", name) + } + return +} + +// Remove listener. +func (s *GRPCServer) RemoveListener(ctx context.Context, in *pb.ListenerRequestWithName) (*pb.Empty, error) { + list, err := s.FindListener(in.Name) + if err != nil { + return nil, err + } + + // Try and close the listener. + err = list.Close() + if err != nil { + return nil, err + } + + return new(pb.Empty), nil +} + +// Set listener's max message size. +func (s *GRPCServer) SetListenerMaxMessageSize(ctx context.Context, in *pb.ListenerMaxMessageSizeRequest) (*pb.Empty, error) { + list, err := s.FindListener(in.Name) + if err != nil { + return nil, err + } + + // Set the max message size for the listener. + list.SetMaxMessageSize(int(in.Size)) + + return new(pb.Empty), nil +} + +// Get listener's max message size. +func (s *GRPCServer) GetListenerMaxMessageSize(ctx context.Context, in *pb.ListenerRequestWithName) (*pb.ListenerMaxMessageSizeReply, error) { + list, err := s.FindListener(in.Name) + if err != nil { + return nil, err + } + + // Get the max message size for the listener. + reply := &pb.ListenerMaxMessageSizeReply{ + Size: int32(list.MaxMessageSize()), + } + + return reply, nil +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..00ce066 --- /dev/null +++ b/main.go @@ -0,0 +1,24 @@ +package main + +// Basic application info. +const ( + serviceName = "virtual-vxlan" + serviceDisplayName = "Virtual VXLAN" + serviceVendor = "com.mrgeckosmedia" + serviceDescription = "Virtual VXLAN using TUN interfaces" + serviceVersion = "0.1" + defaultConfigFile = "config.yaml" +) + +// The application start. +func main() { + // Parse the flags. + ctx := ParseFlags() + + // Configure logging. + flags.Log.Apply() + + // Run the command and exit. + err := ctx.Run() + ctx.FatalIfErrorf(err) +} diff --git a/masquerade.go b/masquerade.go new file mode 100644 index 0000000..f24ff2e --- /dev/null +++ b/masquerade.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + + "github.com/google/gopacket" +) + +// A packet layer that just contains pre-computed bytes. +type Masquerade struct { + MData []byte + MLayerType gopacket.LayerType +} + +// Return the layer type of this layer that we're masquerading. +func (m *Masquerade) LayerType() gopacket.LayerType { + return m.MLayerType +} + +// Encode data to buffer. +func (m *Masquerade) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error { + // Get the data length, and ensure there is data. + length := len(m.MData) + if length < 1 { + return fmt.Errorf("invalid data") + } + + // Allocate bytes in buffer for this data. + bytes, err := b.PrependBytes(length) + if err != nil { + return err + } + + // copy data into bytes. + copy(bytes, m.MData) + return nil +} diff --git a/promiscuous_unix.go b/promiscuous_unix.go new file mode 100644 index 0000000..c5276f4 --- /dev/null +++ b/promiscuous_unix.go @@ -0,0 +1,23 @@ +//go:build !windows + +package main + +import "net" + +// I am focusing on Windows development currently, may fill this out if I find Linux needing promiscuous mode as well. +// Also may work on darwin support/bsd, depending on how I feel. +// For now, this is just a stub to make code happy. + +// Structure to store connections. +type Promiscuous struct { +} + +// Set interface to promiscuous mode, using the interface IP to identify the interface. +func SetInterfacePromiscuous(ifaceIP net.IP) (promisc *Promiscuous, err error) { + return new(Promiscuous), nil +} + +// Close promiscuous mode connection. +func (p *Promiscuous) Close() error { + return nil +} diff --git a/promiscuous_windows.go b/promiscuous_windows.go new file mode 100644 index 0000000..6bf7344 --- /dev/null +++ b/promiscuous_windows.go @@ -0,0 +1,164 @@ +package main + +import ( + "context" + "errors" + "fmt" + "net" + "strings" + "syscall" + "unsafe" + + "github.com/google/gopacket/pcap" + log "github.com/sirupsen/logrus" +) + +// Constants for setting promiscuous mode on windows. See Microsoft's documentation below: +// https://learn.microsoft.com/en-us/windows/win32/winsock/sio-rcvall +const ( + SIO_RCVALL = syscall.IOC_IN | syscall.IOC_VENDOR | 1 + + RCVALL_OFF = 0 + RCVALL_ON = 1 + RCVALL_SOCKETLEVELONLY = 2 + RCVALL_IPLEVEL = 3 +) + +// Structure to store connections. +type Promiscuous struct { + conn net.PacketConn + pcap *pcap.Handle +} + +// Set interface to promiscuous mode, using the interface IP to identify the interface. +func SetInterfacePromiscuous(ifaceIP net.IP) (promisc *Promiscuous, err error) { + promisc = new(Promiscuous) + // I have found npcap to be most performant, however due to its commercial nature, + // I do not include it in this project. You may install it to get its benefit, + // or the alternative will come into play. I am open to hearing of better solutions + // to this packet filtering problem, and better ideas. + err = promisc.tryPCap(ifaceIP) + if err != nil { + // If it fails because wpcap.dll is missing, try alternative method. + if strings.Contains(err.Error(), "wpcap.dll") { + log.Debug("Missing npcap, putting interface into promiscuous mode using SIO_RCVALL.") + // Put interface in promiscuous using ICMP listener. + err = promisc.tryICMPListen(ifaceIP) + if err != nil { + promisc = nil + return + } + // If regular error, just return the error. + } else { + promisc = nil + return + } + } + return +} + +// Use npcap to put interface in promiscuous mode. +func (p *Promiscuous) tryPCap(ifaceIP net.IP) (err error) { + // Find the windows interface name for the adapter with the IP we're binding. + ifs, err := pcap.FindAllDevs() + if err != nil { + return + } + foundIface := false + var piface pcap.Interface + for _, piface = range ifs { + // Find matching IP address. + for _, paddr := range piface.Addresses { + // If we found it, stop to keep interface reference. + if paddr.IP.Equal(ifaceIP) { + foundIface = true + break + } + } + // Stop here to prevent reference from being replaced. + if foundIface { + break + } + } + // If we didn't find the interface being bound to, stop here. + if !foundIface { + return fmt.Errorf("unable to find the interface with vxlan") + } + + // Open the pcap connection to put the interface in promiscuous mode. + log.Debugf("Putting adapter in promiscuous mode: %s (%s)", piface.Description, piface.Name) + p.pcap, err = pcap.OpenLive(piface.Name, 1, true, pcap.BlockForever) + if err != nil { + return + } + // To prevent the pcap from receiving packets, filter to just localhost + // traffic which should result in zero packets to capture. + err = p.pcap.SetBPFFilter("host 127.0.0.1") + if err != nil { + return + } + return +} + +// Use SIO_RCVALL to put interface in promiscuous mode. +func (p *Promiscuous) tryICMPListen(ifaceIP net.IP) (err error) { + // We need the syscall handle to put the interface in promiscuous mode with WSAIoctl. + var socketHandle syscall.Handle + + // Use listen config to get the syscall handle via the control function. + cfg := net.ListenConfig{ + Control: func(network, address string, c syscall.RawConn) error { + return c.Control(func(s uintptr) { + socketHandle = syscall.Handle(s) + }) + }, + } + + // Depending on IP address network, setup ICMP network. + network := "ip4:icmp" + if ifaceIP.To4() == nil { + network = "ip6:ipv6-icmp" + } + + // Use listen packet to start a connection. + p.conn, err = cfg.ListenPacket(context.Background(), network, ifaceIP.String()) + if err != nil { + return + } + + // Put interface in promiscuous mode. + cbbr := uint32(0) + flag := uint32(RCVALL_ON) + size := uint32(unsafe.Sizeof(flag)) + err = syscall.WSAIoctl(socketHandle, SIO_RCVALL, (*byte)(unsafe.Pointer(&flag)), size, nil, 0, &cbbr, nil, 0) + if err != nil { + p.conn.Close() + return + } + go p.connReader() + return +} + +// Read and discard packets read. +func (p *Promiscuous) connReader() { + buf := make([]byte, 500) + for { + _, _, err := p.conn.ReadFrom(buf) + if err != nil { + if errors.Is(err, net.ErrClosed) { + break + } + log.Errorf("received error reading in promiscuous: %v", err) + } + } +} + +// Close promiscuous mode connection. +func (p *Promiscuous) Close() (err error) { + if p.pcap != nil { + p.pcap.Close() + } else { + err = p.conn.Close() + } + return +} diff --git a/server_cmd.go b/server_cmd.go new file mode 100644 index 0000000..70b0419 --- /dev/null +++ b/server_cmd.go @@ -0,0 +1,130 @@ +package main + +import ( + "net" + "os" + "os/signal" + "sync" + "syscall" + + "github.com/coreos/go-systemd/daemon" + "github.com/kardianos/service" + log "github.com/sirupsen/logrus" +) + +// Flags for the server command. +type ServerCmd struct { +} + +// The main App structure. +type App struct { + Net struct { + Listeners []*Listener + sync.Mutex + } + ControllerMac net.HardwareAddr + grpcServer *GRPCServer + Stop chan struct{} + UpdateConfig *UpdateConfig +} + +var app *App + +// Run the server. +func (a *ServerCmd) Run() error { + // Start a new app structure. + app = new(App) + app.ControllerMac = net.HardwareAddr{0x00, 0x00, 0x00, 0x00, 0x00, 0x00} + app.Stop = make(chan struct{}) + { + // Read the configuration from file. + config := ReadConfig() + app.UpdateConfig = config.Update + + // Start the GRPC server for cli communication. + _, err := NewGRPCServer(config.RPCPath) + if err != nil { + return err + } + + // Apply the configuration read. + err = ApplyConfig(config) + // If error applying the config, we should fail. + if err != nil { + return err + } + } + + // Send notification that the service is ready. + daemon.SdNotify(false, daemon.SdNotifyReady) + + // Setup service. + if !service.Interactive() { + s := new(ServiceCmd) + svc, err := s.service() + if err != nil { + return err + } + go svc.Run() + } + + // Run the update loop to check for updates. + go app.RunUpdateLoop() + + // Inform that the service has started. + log.Println("Service started.") + + // Monitor common signals. + c := make(chan os.Signal, 1) + signal.Notify(c, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP) + + // Run program signal handler. + for { + // If this service is stopped by signal, this flag will be changed. + done := false + + // Check for a signal. + select { + case sig := <-c: + switch sig { + // If hangup signal receivied, reload the configurations. + case syscall.SIGHUP: + log.Println("Reloading configurations.") + + // Read the config. + config := ReadConfig() + app.UpdateConfig = config.Update + + // Apply any changes. + err := ApplyConfig(config) + if err != nil { + log.Println(err) + } + + // The default signal is either termination or interruption, + // so we should stop the loop. + default: + done = true + } + // If the app stops itself, mark as done. + case <-app.Stop: + done = true + } + if done { + close(app.Stop) + break + } + } + + // We're quitting, close out all listeners. + for len(app.Net.Listeners) >= 1 { + app.Net.Listeners[0].Close() + } + + // Stop the grpc server. + if app.grpcServer != nil { + app.grpcServer.Close() + } + + return nil +} diff --git a/service_cmd.go b/service_cmd.go new file mode 100644 index 0000000..0fd953f --- /dev/null +++ b/service_cmd.go @@ -0,0 +1,77 @@ +package main + +import ( + "fmt" + + "github.com/kardianos/service" +) + +var ServiceAction = []string{"start", "stop", "status", "restart", "install", "uninstall"} + +// Command to manage this service. +type ServiceCmd struct { + Action struct { + Action string `arg:"" enum:"${serviceActions}" help:"${serviceActions}" required:""` + } `arg:""` +} + +func (s *ServiceCmd) action() string { + return s.Action.Action +} + +func (s *ServiceCmd) Run() (err error) { + svc, err := s.service() + if err != nil { + return err + } + switch s.action() { + case ServiceAction[0]: + err = svc.Start() + case ServiceAction[1]: + err = svc.Stop() + case ServiceAction[2]: + status, err := svc.Status() + if err == nil { + switch status { + case service.StatusRunning: + fmt.Println("Service is running.") + case service.StatusStopped: + fmt.Println("Service is stopped.") + default: + fmt.Println("Service is in an unknown state.") + } + } + case ServiceAction[3]: + err = svc.Restart() + case ServiceAction[4]: + err = svc.Install() + case ServiceAction[5]: + err = svc.Uninstall() + } + if err != nil { + return err + } + if s.action() != ServiceAction[2] { + fmt.Println("Command executed successfully.") + } + return +} + +func (s *ServiceCmd) service() (service.Service, error) { + svcConfig := &service.Config{ + Name: serviceName, + DisplayName: serviceDisplayName, + Description: serviceDescription, + Arguments: []string{"server"}, + } + return service.New(s, svcConfig) +} + +func (s *ServiceCmd) Start(svc service.Service) error { + return nil +} + +func (s *ServiceCmd) Stop(svc service.Service) error { + app.Stop <- struct{}{} + return nil +} diff --git a/sysroot/Dockerfile b/sysroot/Dockerfile new file mode 100644 index 0000000..4195ad9 --- /dev/null +++ b/sysroot/Dockerfile @@ -0,0 +1,21 @@ +FROM debian:bookworm + +ARG PCAP_VER=1.10.5 + +RUN apt-get update; \ + apt-get --no-install-recommends -y -q install \ + build-essential \ + flex \ + bison \ + ca-certificates \ + wget + +RUN wget http://www.tcpdump.org/release/libpcap-${PCAP_VER}.tar.gz && \ + tar xvf libpcap-${PCAP_VER}.tar.gz && \ + cd libpcap-${PCAP_VER} && \ + ./configure --with-pcap=linux --prefix=/usr/ \ + --disable-usb --disable-bluetooth --disable-dbus --disable-rdma --disable-shared && \ + make && \ + make install && \ + cd ../ && \ + rm -Rf libpcap-${PCAP_VER} diff --git a/sysroot/README.md b/sysroot/README.md new file mode 100644 index 0000000..a68bdb8 --- /dev/null +++ b/sysroot/README.md @@ -0,0 +1,18 @@ +# Building sysroot + +- Install qemu binfmt support, and install docker with the buildx extension. + +- Ensure qemu is registered with: +```bash +ls /proc/sys/fs/binfmt_misc/ +``` + +- Setup buildx: +```bash +docker buildx create --name mybuilder --use +``` + +- Build the sysroot: +```bash +./build.sh +``` diff --git a/sysroot/build.sh b/sysroot/build.sh new file mode 100755 index 0000000..0941f8f --- /dev/null +++ b/sysroot/build.sh @@ -0,0 +1,131 @@ +#!/bin/env bash + +# Ensure we're in this directory when running the script. +cd -P -- "$(dirname -- "$0")" || exit 1 + +# Remove existing builds. +rm -Rf ./linux_*/ + +# Build the different sysroots in docker. +if ! docker buildx build --platform=linux/amd64,linux/arm64 --tag 'cross-sysroot:latest' --output 'type=local,dest=.' .; then + echo "Failed to build sysroot, please review sysroot/README.md for instructions on configuring environment." + exit 1 +fi + +# Setup exclude and include list for minimal sysroot building. +exclude_list=() +include_list=() + +exclude_list+=(--exclude "/bin") +exclude_list+=(--exclude "/boot") +exclude_list+=(--exclude "/boot*") +exclude_list+=(--exclude "/dev") +exclude_list+=(--exclude "/etc") +exclude_list+=(--exclude "/home") +exclude_list+=(--exclude "/lib/dhcpd") +exclude_list+=(--exclude "/lib/firmware") +exclude_list+=(--exclude "/lib/hdparm") +exclude_list+=(--exclude "/lib/ifupdown") +exclude_list+=(--exclude "/lib/modules") +exclude_list+=(--exclude "/lib/modprobe.d") +exclude_list+=(--exclude "/lib/modules-load.d") +exclude_list+=(--exclude "/lib/resolvconf") +exclude_list+=(--exclude "/lib/startpar") +exclude_list+=(--exclude "/lib/systemd") +exclude_list+=(--exclude "/lib/terminfo") +exclude_list+=(--exclude "/lib/udev") +exclude_list+=(--exclude "/lib/xtables") +exclude_list+=(--exclude "/lib/ssl/private") +exclude_list+=(--exclude "/lost+found") +exclude_list+=(--exclude "/media") +exclude_list+=(--exclude "/mnt") +exclude_list+=(--exclude "/proc") +exclude_list+=(--exclude "/root") +exclude_list+=(--exclude "/run") +exclude_list+=(--exclude "/sbin") +exclude_list+=(--exclude "/srv") +exclude_list+=(--exclude "/sys") +exclude_list+=(--exclude "/tmp") +exclude_list+=(--exclude "/usr/bin") +exclude_list+=(--exclude "/usr/games") +exclude_list+=(--exclude "/usr/sbin") +exclude_list+=(--exclude "/usr/share") +exclude_list+=(--exclude "/usr/src") +exclude_list+=(--exclude "/usr/local/bin") +exclude_list+=(--exclude "/usr/local/etc") +exclude_list+=(--exclude "/usr/local/games") +exclude_list+=(--exclude "/usr/local/man") +exclude_list+=(--exclude "/usr/local/sbin") +exclude_list+=(--exclude "/usr/local/share") +exclude_list+=(--exclude "/usr/local/src") +exclude_list+=(--exclude "/usr/lib/ssl/private") +exclude_list+=(--exclude "/var") +exclude_list+=(--exclude "/snap") +exclude_list+=(--exclude "*python*") + +include_list+=(--include "*.a") +include_list+=(--include "*.so") +include_list+=(--include "*.so.*") +include_list+=(--include "*.h") +include_list+=(--include "*.hh") +include_list+=(--include "*.hpp") +include_list+=(--include "*.hxx") +include_list+=(--include "*.pc") +include_list+=(--include "/lib") +include_list+=(--include "/lib32") +include_list+=(--include "/lib64") +include_list+=(--include "/libx32") +include_list+=(--include "*/") + +args=() +args+=(-a) +args+=(-z) +args+=(-m) +args+=(-d) +args+=(-h) +args+=(--keep-dirlinks) +args+=("--info=progress2") +args+=(--delete) +args+=(--prune-empty-dirs) +args+=(--sparse) +args+=(--links) +args+=(--copy-unsafe-links) +args+=("${exclude_list[@]}") +args+=("${include_list[@]}") +args+=(--exclude "*") + +# Make the sysroot environments minimal. +echo "Making sysroot the bare minimal." +for arch in linux_*; do + # Skip already minimal dirs. + if [[ $arch =~ _minimal ]]; then + continue + fi + + # Fix symbolic links. + ( + cd "$arch" || exit 1 + for slink in ./usr/lib64/ld-linux-x86-64.so.2 ./usr/lib/*-linux-gnu/*.so; do + if [[ -L $slink ]]; then + spath=$(readlink "$slink") + if grep -q "/${arch}/" <<<"$spath"; then + npath=$(sed "s/\/$arch\//.\//" <<<"$spath") + rpath=$(realpath -m --relative-to="$(dirname "$slink")" "$npath") + unlink "$slink" + ln -s "$rpath" "$slink" + fi + fi + done + ) + + # Run rsync to minimal. + rsync "${args[@]}" "$arch/" "${arch}_minimal/" + rm -Rf "${arch:?}/" + mv "${arch}_minimal/" "$arch/" +done + +# Clear build cache. +echo "Clearing build cache." +docker buildx prune --all --force + +echo "Done building sysroot." diff --git a/tun/errors.go b/tun/errors.go new file mode 100644 index 0000000..d56b760 --- /dev/null +++ b/tun/errors.go @@ -0,0 +1,12 @@ +package tun + +import ( + "errors" +) + +var ( + // ErrTooManySegments is returned by Device.Read() when segmentation + // overflows the length of supplied buffers. This error should not cause + // reads to cease. + ErrTooManySegments = errors.New("too many segments") +) diff --git a/tun/tun.go b/tun/tun.go new file mode 100644 index 0000000..ed3614a --- /dev/null +++ b/tun/tun.go @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: MIT + * + * Copyright (C) 2017-2023 WireGuard LLC. All Rights Reserved. + */ + +package tun + +import ( + "net/netip" + "os" +) + +type Event int + +const ( + EventUp = 1 << iota + EventDown + EventMTUUpdate +) + +type Device interface { + // File returns the file descriptor of the device. + File() *os.File + + // Read one packet from the Device (without any additional headers). + // On a successful read it returns the number of bytes read. + Read(b []byte) (int, error) + + // Write one packet to the device (without any additional headers). + // On a successful write it returns the number of bytes written. + Write(b []byte) (int, error) + + // Set MTU on the device. + SetMTU(int) error + + // MTU returns the MTU of the Device. + MTU() (int, error) + + // Name returns the current name of the Device. + Name() (string, error) + + // Set IP Addresses for the device. + SetIPAddresses(addresses []netip.Prefix) error + + // Get IP Addresses for the device. + GetIPAddresses() ([]netip.Prefix, error) + + // Events returns a channel of type Event, which is fed Device events. + Events() <-chan Event + + // Close stops the Device and closes the Event channel. + Close() error +} diff --git a/tun/tun_linux.go b/tun/tun_linux.go new file mode 100644 index 0000000..f65b12e --- /dev/null +++ b/tun/tun_linux.go @@ -0,0 +1,562 @@ +/* SPDX-License-Identifier: MIT + * + * Copyright (C) 2017-2023 WireGuard LLC. All Rights Reserved. + */ + +package tun + +/* Implementation of the TUN device interface for linux + */ + +import ( + "errors" + "fmt" + "net/netip" + "os" + "sync" + "syscall" + "time" + "unsafe" + + "github.com/vishvananda/netlink" + "golang.org/x/sys/unix" + "golang.zx2c4.com/wireguard/rwcancel" +) + +const ( + cloneDevicePath = "/dev/net/tun" + ifReqSize = unix.IFNAMSIZ + 64 +) + +type NativeTun struct { + tunFile *os.File + index int32 // if index + errors chan error // async error handling + events chan Event // device related events + netlinkSock int + netlinkCancel *rwcancel.RWCancel + hackListenerClosed sync.Mutex + statusListenersShutdown chan struct{} + + closeOnce sync.Once + + nameOnce sync.Once // guards calling initNameCache, which sets following fields + nameCache string // name of interface + nameErr error +} + +func (tun *NativeTun) File() *os.File { + return tun.tunFile +} + +func (tun *NativeTun) routineHackListener() { + defer tun.hackListenerClosed.Unlock() + /* This is needed for the detection to work across network namespaces + * If you are reading this and know a better method, please get in touch. + */ + last := 0 + const ( + up = 1 + down = 2 + ) + for { + sysconn, err := tun.tunFile.SyscallConn() + if err != nil { + return + } + err2 := sysconn.Control(func(fd uintptr) { + _, err = unix.Write(int(fd), nil) + }) + if err2 != nil { + return + } + switch err { + case unix.EINVAL: + if last != up { + // If the tunnel is up, it reports that write() is + // allowed but we provided invalid data. + tun.events <- EventUp + last = up + } + case unix.EIO: + if last != down { + // If the tunnel is down, it reports that no I/O + // is possible, without checking our provided data. + tun.events <- EventDown + last = down + } + default: + return + } + select { + case <-time.After(time.Second): + // nothing + case <-tun.statusListenersShutdown: + return + } + } +} + +func createNetlinkSocket() (int, error) { + sock, err := unix.Socket(unix.AF_NETLINK, unix.SOCK_RAW|unix.SOCK_CLOEXEC, unix.NETLINK_ROUTE) + if err != nil { + return -1, err + } + saddr := &unix.SockaddrNetlink{ + Family: unix.AF_NETLINK, + Groups: unix.RTMGRP_LINK | unix.RTMGRP_IPV4_IFADDR | unix.RTMGRP_IPV6_IFADDR, + } + err = unix.Bind(sock, saddr) + if err != nil { + return -1, err + } + return sock, nil +} + +func (tun *NativeTun) routineNetlinkListener() { + defer func() { + unix.Close(tun.netlinkSock) + tun.hackListenerClosed.Lock() + close(tun.events) + tun.netlinkCancel.Close() + }() + + for msg := make([]byte, 1<<16); ; { + var err error + var msgn int + for { + msgn, _, _, _, err = unix.Recvmsg(tun.netlinkSock, msg[:], nil, 0) + if err == nil || !rwcancel.RetryAfterError(err) { + break + } + if !tun.netlinkCancel.ReadyRead() { + tun.errors <- fmt.Errorf("netlink socket closed: %w", err) + return + } + } + if err != nil { + tun.errors <- fmt.Errorf("failed to receive netlink message: %w", err) + return + } + + select { + case <-tun.statusListenersShutdown: + return + default: + } + + wasEverUp := false + for remain := msg[:msgn]; len(remain) >= unix.SizeofNlMsghdr; { + + hdr := *(*unix.NlMsghdr)(unsafe.Pointer(&remain[0])) + + if int(hdr.Len) > len(remain) { + break + } + + switch hdr.Type { + case unix.NLMSG_DONE: + remain = []byte{} + + case unix.RTM_NEWLINK: + info := *(*unix.IfInfomsg)(unsafe.Pointer(&remain[unix.SizeofNlMsghdr])) + remain = remain[hdr.Len:] + + if info.Index != tun.index { + // not our interface + continue + } + + if info.Flags&unix.IFF_RUNNING != 0 { + tun.events <- EventUp + wasEverUp = true + } + + if info.Flags&unix.IFF_RUNNING == 0 { + // Don't emit EventDown before we've ever emitted EventUp. + // This avoids a startup race with HackListener, which + // might detect Up before we have finished reporting Down. + if wasEverUp { + tun.events <- EventDown + } + } + + tun.events <- EventMTUUpdate + + default: + remain = remain[hdr.Len:] + } + } + } +} + +func getIFIndex(name string) (int32, error) { + fd, err := unix.Socket( + unix.AF_INET, + unix.SOCK_DGRAM|unix.SOCK_CLOEXEC, + 0, + ) + if err != nil { + return 0, err + } + + defer unix.Close(fd) + + var ifr [ifReqSize]byte + copy(ifr[:], name) + _, _, errno := unix.Syscall( + unix.SYS_IOCTL, + uintptr(fd), + uintptr(unix.SIOCGIFINDEX), + uintptr(unsafe.Pointer(&ifr[0])), + ) + + if errno != 0 { + return 0, errno + } + + return *(*int32)(unsafe.Pointer(&ifr[unix.IFNAMSIZ])), nil +} + +func (tun *NativeTun) setMTU(n int) error { + name, err := tun.Name() + if err != nil { + return err + } + + // open datagram socket + fd, err := unix.Socket( + unix.AF_INET, + unix.SOCK_DGRAM|unix.SOCK_CLOEXEC, + 0, + ) + if err != nil { + return err + } + + defer unix.Close(fd) + + // do ioctl call + var ifr [ifReqSize]byte + copy(ifr[:], name) + *(*uint32)(unsafe.Pointer(&ifr[unix.IFNAMSIZ])) = uint32(n) + _, _, errno := unix.Syscall( + unix.SYS_IOCTL, + uintptr(fd), + uintptr(unix.SIOCSIFMTU), + uintptr(unsafe.Pointer(&ifr[0])), + ) + + if errno != 0 { + return fmt.Errorf("failed to set MTU of TUN device: %w", errno) + } + + return nil +} + +func (tun *NativeTun) SetMTU(mtu int) error { + return tun.setMTU(mtu) +} + +func (tun *NativeTun) SetIPAddresses(addresses []netip.Prefix) error { + link, err := netlink.LinkByIndex(int(tun.index)) + if err != nil { + return err + } + var setAddr []*netlink.Addr + for _, address := range addresses { + addr, err := netlink.ParseAddr(address.String()) + if err != nil { + return err + } + setAddr = append(setAddr, addr) + } + addrList, err := netlink.AddrList(link, netlink.FAMILY_ALL) + for _, address := range addrList { + found := -1 + for i, addr := range setAddr { + if addr.Equal(address) { + found = i + } + } + if found == -1 { + err = netlink.AddrDel(link, &address) + if err != nil { + return err + } + } else { + setAddr = append(setAddr[:found], setAddr[found+1:]...) + } + } + for _, addr := range setAddr { + err = netlink.AddrAdd(link, addr) + if err != nil { + return err + } + } + return nil +} + +func (tun *NativeTun) GetIPAddresses() ([]netip.Prefix, error) { + link, err := netlink.LinkByIndex(int(tun.index)) + if err != nil { + return nil, err + } + var prefixes []netip.Prefix + addrList, err := netlink.AddrList(link, netlink.FAMILY_ALL) + for _, address := range addrList { + prefix, err := netip.ParsePrefix(address.String()) + if err != nil { + return nil, err + } + prefixes = append(prefixes, prefix) + } + return prefixes, nil +} + +func (tun *NativeTun) MTU() (int, error) { + name, err := tun.Name() + if err != nil { + return 0, err + } + + // open datagram socket + fd, err := unix.Socket( + unix.AF_INET, + unix.SOCK_DGRAM|unix.SOCK_CLOEXEC, + 0, + ) + if err != nil { + return 0, err + } + + defer unix.Close(fd) + + // do ioctl call + + var ifr [ifReqSize]byte + copy(ifr[:], name) + _, _, errno := unix.Syscall( + unix.SYS_IOCTL, + uintptr(fd), + uintptr(unix.SIOCGIFMTU), + uintptr(unsafe.Pointer(&ifr[0])), + ) + if errno != 0 { + return 0, fmt.Errorf("failed to get MTU of TUN device: %w", errno) + } + + return int(*(*int32)(unsafe.Pointer(&ifr[unix.IFNAMSIZ]))), nil +} + +func (tun *NativeTun) Name() (string, error) { + tun.nameOnce.Do(tun.initNameCache) + return tun.nameCache, tun.nameErr +} + +func (tun *NativeTun) initNameCache() { + tun.nameCache, tun.nameErr = tun.nameSlow() +} + +func (tun *NativeTun) nameSlow() (string, error) { + sysconn, err := tun.tunFile.SyscallConn() + if err != nil { + return "", err + } + var ifr [ifReqSize]byte + var errno syscall.Errno + err = sysconn.Control(func(fd uintptr) { + _, _, errno = unix.Syscall( + unix.SYS_IOCTL, + fd, + uintptr(unix.TUNGETIFF), + uintptr(unsafe.Pointer(&ifr[0])), + ) + }) + if err != nil { + return "", fmt.Errorf("failed to get name of TUN device: %w", err) + } + if errno != 0 { + return "", fmt.Errorf("failed to get name of TUN device: %w", errno) + } + return unix.ByteSliceToString(ifr[:]), nil +} + +func (tun *NativeTun) Write(b []byte) (int, error) { + n, err := tun.tunFile.Write(b) + if errors.Is(err, syscall.EBADFD) { + return 0, os.ErrClosed + } + if err != nil { + return 0, err + } + return n, nil +} + +func (tun *NativeTun) Read(b []byte) (int, error) { + select { + case err := <-tun.errors: + return 0, err + default: + n, err := tun.tunFile.Read(b) + if errors.Is(err, syscall.EBADFD) { + err = os.ErrClosed + } + if err != nil { + return 0, err + } + return n, nil + } +} + +func (tun *NativeTun) Events() <-chan Event { + return tun.events +} + +func (tun *NativeTun) Close() error { + var err1, err2 error + tun.closeOnce.Do(func() { + if tun.statusListenersShutdown != nil { + close(tun.statusListenersShutdown) + if tun.netlinkCancel != nil { + err1 = tun.netlinkCancel.Cancel() + } + } else if tun.events != nil { + close(tun.events) + } + err2 = tun.tunFile.Close() + }) + if err1 != nil { + return err1 + } + return err2 +} + +func (tun *NativeTun) initFromFlags(name string) error { + sc, err := tun.tunFile.SyscallConn() + if err != nil { + return err + } + if e := sc.Control(func(fd uintptr) { + var ( + ifr *unix.Ifreq + ) + ifr, err = unix.NewIfreq(name) + if err != nil { + return + } + err = unix.IoctlIfreq(int(fd), unix.TUNGETIFF, ifr) + if err != nil { + return + } + }); e != nil { + return e + } + return err +} + +// CreateTUN creates a Device with the provided name and MTU. +func CreateTUN(name string, mtu int) (Device, error) { + nfd, err := unix.Open(cloneDevicePath, unix.O_RDWR|unix.O_CLOEXEC, 0) + if err != nil { + if os.IsNotExist(err) { + return nil, fmt.Errorf("CreateTUN(%q) failed; %s does not exist", name, cloneDevicePath) + } + return nil, err + } + + ifr, err := unix.NewIfreq(name) + if err != nil { + return nil, err + } + // IFF_VNET_HDR enables the "tun status hack" via routineHackListener() + // where a null write will return EINVAL indicating the TUN is up. + ifr.SetUint16(unix.IFF_TUN | unix.IFF_NO_PI | unix.IFF_VNET_HDR) + err = unix.IoctlIfreq(nfd, unix.TUNSETIFF, ifr) + if err != nil { + return nil, err + } + + err = unix.SetNonblock(nfd, true) + if err != nil { + unix.Close(nfd) + return nil, err + } + + // Note that the above -- open,ioctl,nonblock -- must happen prior to handing it to netpoll as below this line. + + fd := os.NewFile(uintptr(nfd), cloneDevicePath) + return CreateTUNFromFile(fd, mtu) +} + +// CreateTUNFromFile creates a Device from an os.File with the provided MTU. +func CreateTUNFromFile(file *os.File, mtu int) (Device, error) { + tun := &NativeTun{ + tunFile: file, + events: make(chan Event, 5), + errors: make(chan error, 5), + statusListenersShutdown: make(chan struct{}), + } + + name, err := tun.Name() + if err != nil { + return nil, err + } + + err = tun.initFromFlags(name) + if err != nil { + return nil, err + } + + // start event listener + tun.index, err = getIFIndex(name) + if err != nil { + return nil, err + } + + tun.netlinkSock, err = createNetlinkSocket() + if err != nil { + return nil, err + } + tun.netlinkCancel, err = rwcancel.NewRWCancel(tun.netlinkSock) + if err != nil { + unix.Close(tun.netlinkSock) + return nil, err + } + + tun.hackListenerClosed.Lock() + go tun.routineNetlinkListener() + go tun.routineHackListener() // cross namespace + + err = tun.setMTU(mtu) + if err != nil { + unix.Close(tun.netlinkSock) + return nil, err + } + + return tun, nil +} + +// CreateUnmonitoredTUNFromFD creates a Device from the provided file +// descriptor. +func CreateUnmonitoredTUNFromFD(fd int) (Device, string, error) { + err := unix.SetNonblock(fd, true) + if err != nil { + return nil, "", err + } + file := os.NewFile(uintptr(fd), "/dev/tun") + tun := &NativeTun{ + tunFile: file, + events: make(chan Event, 5), + errors: make(chan error, 5), + } + name, err := tun.Name() + if err != nil { + return nil, "", err + } + err = tun.initFromFlags(name) + if err != nil { + return nil, "", err + } + return tun, name, err +} diff --git a/tun/tun_windows.go b/tun/tun_windows.go new file mode 100644 index 0000000..be216ce --- /dev/null +++ b/tun/tun_windows.go @@ -0,0 +1,336 @@ +/* SPDX-License-Identifier: MIT + * + * Copyright (C) 2017-2023 WireGuard LLC. All Rights Reserved. + */ + +package tun + +import ( + "crypto/md5" + "errors" + "fmt" + "net/netip" + "os" + "sync" + "sync/atomic" + "time" + "unsafe" + _ "unsafe" + + "golang.org/x/sys/windows" + "golang.zx2c4.com/wintun" + "golang.zx2c4.com/wireguard/windows/tunnel/winipcfg" +) + +const ( + rateMeasurementGranularity = uint64((time.Second / 2) / time.Nanosecond) + spinloopRateThreshold = 800000000 / 8 // 800mbps + spinloopDuration = uint64(time.Millisecond / 80 / time.Nanosecond) // ~1gbit/s +) + +type rateJuggler struct { + current atomic.Uint64 + nextByteCount atomic.Uint64 + nextStartTime atomic.Int64 + changing atomic.Bool +} + +type NativeTun struct { + wt *wintun.Adapter + name string + handle windows.Handle + rate rateJuggler + session wintun.Session + readWait windows.Handle + events chan Event + running sync.WaitGroup + closeOnce sync.Once + close atomic.Bool + mtu int +} + +var ( + WintunTunnelType = "vxlan" + WintunGUIDPrefix = "virtual-vxlan Windows GUID v1" +) + +//go:linkname procyield runtime.procyield +func procyield(cycles uint32) + +//go:linkname nanotime runtime.nanotime +func nanotime() int64 + +// Create an 128bit GUID using interface name. +func generateGUIDByDeviceName(name string) (*windows.GUID, error) { + hash := md5.New() + _, err := hash.Write([]byte(WintunGUIDPrefix + name)) + if err != nil { + return nil, err + } + sum := hash.Sum(nil) + + return (*windows.GUID)(unsafe.Pointer(&sum[0])), nil +} + +// CreateTUN creates a Wintun interface with the given name. Should a Wintun +// interface with the same name exist, it is reused. +func CreateTUN(ifname string, mtu int) (Device, error) { + guid, err := generateGUIDByDeviceName(ifname) + if err != nil { + return nil, err + } + return CreateTUNWithRequestedGUID(ifname, guid, mtu) +} + +// CreateTUNWithRequestedGUID creates a Wintun interface with the given name and +// a requested GUID. Should a Wintun interface with the same name exist, it is reused. +func CreateTUNWithRequestedGUID(ifname string, requestedGUID *windows.GUID, mtu int) (Device, error) { + wt, err := wintun.CreateAdapter(ifname, WintunTunnelType, requestedGUID) + if err != nil { + return nil, fmt.Errorf("error creating interface: %w", err) + } + + forcedMTU := 1420 + if mtu > 0 { + forcedMTU = mtu + } + + tun := &NativeTun{ + wt: wt, + name: ifname, + handle: windows.InvalidHandle, + events: make(chan Event, 10), + mtu: forcedMTU, + } + + err = tun.setMTU(windows.AF_INET, forcedMTU) + if err != nil { + wt.Close() + close(tun.events) + return nil, fmt.Errorf("error setting MTU for IPv4: %w", err) + } + err = tun.setMTU(windows.AF_INET6, forcedMTU) + if err != nil { + wt.Close() + close(tun.events) + return nil, fmt.Errorf("error setting MTU for IPv6: %w", err) + } + + tun.session, err = wt.StartSession(0x800000) // Ring capacity, 8 MiB + if err != nil { + tun.wt.Close() + close(tun.events) + return nil, fmt.Errorf("error starting session: %w", err) + } + tun.readWait = tun.session.ReadWaitEvent() + return tun, nil +} + +func (tun *NativeTun) Name() (string, error) { + return tun.name, nil +} + +func (tun *NativeTun) File() *os.File { + return nil +} + +func (tun *NativeTun) Events() <-chan Event { + return tun.events +} + +func (tun *NativeTun) Close() error { + var err error + tun.closeOnce.Do(func() { + tun.close.Store(true) + windows.SetEvent(tun.readWait) + tun.running.Wait() + tun.session.End() + if tun.wt != nil { + tun.wt.Close() + } + close(tun.events) + }) + return err +} + +func (tun *NativeTun) setMTU(family winipcfg.AddressFamily, mtu int) error { + luid := winipcfg.LUID(tun.LUID()) + ipif, err := luid.IPInterface(family) + if err != nil { + return err + } + ipif.NLMTU = uint32(mtu) + return ipif.Set() +} + +func (tun *NativeTun) SetMTU(mtu int) error { + if tun.close.Load() { + return nil + } + err := tun.setMTU(windows.AF_INET, mtu) + if err != nil { + return fmt.Errorf("error setting MTU for IPv4: %v", err) + } + err = tun.setMTU(windows.AF_INET6, mtu) + if err != nil { + return fmt.Errorf("error setting MTU for IPv6: %v", err) + } + update := tun.mtu != mtu + tun.mtu = mtu + if update { + tun.events <- EventMTUUpdate + } + return nil +} + +func (tun *NativeTun) MTU() (int, error) { + return tun.mtu, nil +} + +// Note: Read() and Write() assume the caller comes only from a single thread; there's no locking. + +func (tun *NativeTun) Read(b []byte) (int, error) { + tun.running.Add(1) + defer tun.running.Done() +retry: + if tun.close.Load() { + return 0, os.ErrClosed + } + start := nanotime() + shouldSpin := tun.rate.current.Load() >= spinloopRateThreshold && uint64(start-tun.rate.nextStartTime.Load()) <= rateMeasurementGranularity*2 + for { + if tun.close.Load() { + return 0, os.ErrClosed + } + packet, err := tun.session.ReceivePacket() + switch err { + case nil: + n := copy(b, packet) + tun.session.ReleaseReceivePacket(packet) + tun.rate.update(uint64(n)) + return n, nil + case windows.ERROR_NO_MORE_ITEMS: + if !shouldSpin || uint64(nanotime()-start) >= spinloopDuration { + windows.WaitForSingleObject(tun.readWait, windows.INFINITE) + goto retry + } + procyield(1) + continue + case windows.ERROR_HANDLE_EOF: + return 0, os.ErrClosed + case windows.ERROR_INVALID_DATA: + return 0, errors.New("send ring corrupt") + } + return 0, fmt.Errorf("Read failed: %w", err) + } +} + +func (tun *NativeTun) Write(b []byte) (int, error) { + tun.running.Add(1) + defer tun.running.Done() + if tun.close.Load() { + return 0, os.ErrClosed + } + + packetSize := len(b) + tun.rate.update(uint64(packetSize)) + + packet, err := tun.session.AllocateSendPacket(packetSize) + switch err { + case nil: + // TODO: Explore options to eliminate this copy. + copy(packet, b) + tun.session.SendPacket(packet) + return packetSize, nil + case windows.ERROR_HANDLE_EOF: + return 0, os.ErrClosed + case windows.ERROR_BUFFER_OVERFLOW: + return 0, nil // Dropping when ring is full. + } + return 0, fmt.Errorf("Write failed: %w", err) +} + +// LUID returns Windows interface instance ID. +func (tun *NativeTun) LUID() uint64 { + tun.running.Add(1) + defer tun.running.Done() + if tun.close.Load() { + return 0 + } + return tun.wt.LUID() +} + +func (tun *NativeTun) SetIPAddresses(addresses []netip.Prefix) error { + luid := winipcfg.LUID(tun.LUID()) + + err := luid.SetIPAddresses(addresses) + if err != nil { + return fmt.Errorf("failed to set address: %w", err) + } + + return nil +} + +func addrFromSocketAddress(sockAddr windows.SocketAddress) netip.Addr { + ip := sockAddr.IP() + ip4 := ip.To4() + var addr netip.Addr + if ip4 != nil { + addr = netip.AddrFrom4([4]byte(ip4)) + } else { + addr = netip.AddrFrom16([16]byte(ip)) + } + return addr +} + +func (tun *NativeTun) GetIPAddresses() ([]netip.Prefix, error) { + luid := winipcfg.LUID(tun.LUID()) + ipAdaters, err := winipcfg.GetAdaptersAddresses(windows.AF_UNSPEC, winipcfg.GAAFlagIncludePrefix|winipcfg.GAAFlagSkipAnycast|winipcfg.GAAFlagSkipMulticast|winipcfg.GAAFlagSkipDNSServer|winipcfg.GAAFlagSkipFriendlyName|winipcfg.GAAFlagSkipDNSInfo) + if err != nil { + return nil, fmt.Errorf("failed to get IP adapters: %w", err) + } + var prefixes []netip.Prefix + for _, ipAdater := range ipAdaters { + if ipAdater.LUID == luid { + unicast := ipAdater.FirstUnicastAddress + for unicast != nil { + addr := addrFromSocketAddress(unicast.Address) + prefix := ipAdater.FirstPrefix + for prefix != nil { + pAddr := addrFromSocketAddress(prefix.Address) + if (pAddr.Is4() && prefix.PrefixLength != 32) || (pAddr.Is6() && prefix.PrefixLength != 128) { + nPrefix := netip.PrefixFrom(pAddr, int(prefix.PrefixLength)) + if nPrefix.Contains(addr) { + prefixes = append(prefixes, netip.PrefixFrom(addr, int(prefix.PrefixLength))) + prefix = nil + continue + } + } + prefix = prefix.Next + } + unicast = unicast.Next + } + } + } + return prefixes, nil +} + +// RunningVersion returns the running version of the Wintun driver. +func (tun *NativeTun) RunningVersion() (version uint32, err error) { + return wintun.RunningVersion() +} + +func (rate *rateJuggler) update(packetLen uint64) { + now := nanotime() + total := rate.nextByteCount.Add(packetLen) + period := uint64(now - rate.nextStartTime.Load()) + if period >= rateMeasurementGranularity { + if !rate.changing.CompareAndSwap(false, true) { + return + } + rate.nextStartTime.Store(now) + rate.current.Store(total * uint64(time.Second/time.Nanosecond) / period) + rate.nextByteCount.Store(0) + rate.changing.Store(false) + } +} diff --git a/update_cmd.go b/update_cmd.go new file mode 100644 index 0000000..adc8417 --- /dev/null +++ b/update_cmd.go @@ -0,0 +1,10 @@ +package main + +// Command to manage this service. +type UpdateCmd struct{} + +func (s *UpdateCmd) Run() (err error) { + config := ReadMinimalConfig() + CheckForUpdate(config.Update, false) + return +} diff --git a/updater.go b/updater.go new file mode 100644 index 0000000..a037a90 --- /dev/null +++ b/updater.go @@ -0,0 +1,262 @@ +package main + +import ( + "bufio" + "context" + "errors" + "fmt" + "math/rand" + "os" + "os/exec" + "path/filepath" + "strings" + "time" + + "github.com/coreos/go-systemd/daemon" + "github.com/creativeprojects/go-selfupdate" + "github.com/hashicorp/go-version" + log "github.com/sirupsen/logrus" +) + +// Check for update and update if one is available. +func Update(c *UpdateConfig) error { + log.Println("Checking for update.") + // Setup source. + source, err := selfupdate.NewGitHubSource(selfupdate.GitHubConfig{}) + if err != nil { + return err + } + + // Get the path to ourself. + exe, err := selfupdate.ExecutablePath() + if err != nil { + return fmt.Errorf("could not locate executable path: %s", err) + } + updateDir, cmd := filepath.Split(exe) + oldSavePath := filepath.Join(updateDir, fmt.Sprintf(".%s.old", cmd)) + + // Get updater with source and validator. + updater, err := selfupdate.NewUpdater(selfupdate.Config{ + Source: source, + Validator: &selfupdate.ChecksumValidator{UniqueFilename: "checksums.txt"}, + OldSavePath: oldSavePath, + }) + if err != nil { + return err + } + + // Find the latest release. + release, found, err := updater.DetectLatest(context.Background(), selfupdate.NewRepositorySlug(c.Owner, c.Repo)) + if err != nil { + return err + } + if !found { + log.Println("No updates available.") + return nil + } + + // Compare the versions. + thisVersion, err := version.NewVersion(c.CurrentVersion) + if err != nil { + return err + } + latestVersion, err := version.NewVersion(release.Version()) + if err != nil { + return err + } + + // If an update isn't available, end. + if !thisVersion.LessThan(latestVersion) { + log.Println("No updates available.") + return nil + } + log.Println("Updating to version:", release.Version()) + + // We're updating, tell the app so services can be stopped. + c.PreUpdate() + + // Perform the update. + err = updater.UpdateTo(context.Background(), release, exe) + + // If update failed, rollback and tell the app we failed. +abortUpdate: + if err != nil { + rerr := os.Rename(oldSavePath, exe) + if rerr != nil { + log.Println("Failed to rollback update:", rerr) + } + c.AbortUpdate() + return err + } + log.Println("Updated.") + + // If relaunch is requested, then start the new exe and confirm it works. + if c.ShouldRelaunch { + // Make process and get its stdout/stderr. + log.Println("Starting new process.") + p := exec.Command(exe, os.Args[1:]...) + p.Env = os.Environ() + p.Env = append(p.Env, "UPDATER_UPDATE=1") + stdout, err := p.StdoutPipe() + if err != nil { + goto abortUpdate + } + stderr, err := p.StderrPipe() + if err != nil { + goto abortUpdate + } + + // Start process. + err = p.Start() + if err != nil { + goto abortUpdate + } + + // Set timeout to kill process. + timer := time.AfterFunc(c.StartupTimeout, func() { + p.Process.Kill() + }) + + // Channels to confirm success or failure. + success := make(chan bool) + failure := make(chan error) + + // Scan the stdout for success message. + go func() { + stdoutScanner := bufio.NewScanner(stdout) + for stdoutScanner.Scan() { + line := stdoutScanner.Text() + fmt.Fprintln(os.Stdout, line) + if c.IsSuccessMsg(line) { + success <- true + return + } + } + }() + + // Scan the stderr for sucess message. + go func() { + stderrScanner := bufio.NewScanner(stderr) + for stderrScanner.Scan() { + line := stderrScanner.Text() + fmt.Fprintln(os.Stderr, line) + if c.IsSuccessMsg(line) { + success <- true + return + } + } + }() + + // Wait for command exit, and pass errors. + go func() { + err := p.Wait() + failure <- err + }() + + // Wait for one of the channels to be sent information. + select { + case <-success: + case err = <-failure: + if err == nil { + err = errors.New("program exited without error") + } + } + + // Stop the timer as the process is either going to be left running or is stopped. + timer.Stop() + + // If stop due to error, abort. + if err != nil { + goto abortUpdate + } + + // The update was successful, so we can remove the old binary. + os.Remove(oldSavePath) + + // Set the new process stdio to ours. + p.Stdout = os.Stdout + p.Stderr = os.Stderr + p.Stdin = os.Stdin + + // Notify systemd to watch the new process. + // Those babysitting fees are too high to have it watch us too. + // Amy said SystemD doesn't do babysitting. + daemon.SdNotify(false, fmt.Sprintf("MAINPID=%d", p.Process.Pid)) + + // Quit this process as the new process will continue running as a fork. + os.Exit(0) + } + + // The update was successful, so we can remove the old binary. + os.Remove(oldSavePath) + + return nil +} + +// Check for updates, and apply. +func CheckForUpdate(c *UpdateConfig, relaunch bool) { + // Set update config local variables. + c.CurrentVersion = serviceVersion + c.ShouldRelaunch = relaunch + c.PreUpdate = func() { + // Stop all listeners to allow updated service to start. + for len(app.Net.Listeners) >= 1 { + app.Net.Listeners[0].Close() + } + + // Stop the grpc server. + if app.grpcServer != nil { + app.grpcServer.Close() + } + } + c.IsSuccessMsg = func(msg string) bool { + if strings.Contains(msg, "Service started.") { + return true + } + return false + } + c.StartupTimeout = 5 * time.Minute + // If update is aborted, we should restart the service. + c.AbortUpdate = func() { + // Read the configuration from file. + config := ReadConfig() + + // Start the GRPC server for cli communication. + _, err := NewGRPCServer(config.RPCPath) + if err != nil { + log.Fatalln(err) + } + + // Apply the configuration read. + err = ApplyConfig(config) + // If error applying the config, we should fail. + if err != nil { + log.Fatalln(err) + } + } + err := Update(c) + if err != nil { + log.Println("Failure checking for update:", err) + } +} + +// Every 24 hours, check for updates. +func (a *App) RunUpdateLoop() { + // If disabled, don't run loop. + if app.UpdateConfig.Disabled { + return + } + + // Randomly check for updates at first start. + if os.Getenv("UPDATER_UPDATE") != "1" && rand.Intn(20) == 2 { + CheckForUpdate(app.UpdateConfig, true) + } + + // Run update check every 24 hours. + for { + nextUpdate := time.Hour * 24 + nextUpdate += time.Duration(rand.Intn(18000)) * time.Second + time.Sleep(nextUpdate) + CheckForUpdate(app.UpdateConfig, true) + } +} diff --git a/utils.go b/utils.go new file mode 100644 index 0000000..3ce2133 --- /dev/null +++ b/utils.go @@ -0,0 +1,20 @@ +package main + +import ( + "crypto/rand" + "net" +) + +// Generate an random MAC in the locally administered OUI. +func generateRandomMAC() net.HardwareAddr { + // Start a new MAC address. + mac := make(net.HardwareAddr, 6) + + // Just replace all bytes in MAC with random bytes. + rand.Read(mac) + // Set OUI to locally administered space. + mac[0] = 0x0a + mac[1] = 0x00 + + return mac +} diff --git a/vxlan/vxlan.pb.go b/vxlan/vxlan.pb.go new file mode 100644 index 0000000..d1f32df --- /dev/null +++ b/vxlan/vxlan.pb.go @@ -0,0 +1,1743 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.1 +// protoc v5.29.2 +// source: vxlan/vxlan.proto + +package vxlan + +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) +) + +// Standard empty message. +type Empty struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Empty) Reset() { + *x = Empty{} + mi := &file_vxlan_vxlan_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Empty) ProtoMessage() {} + +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{0} +} + +// Listener messages. +type ListenerRequestWithName struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListenerRequestWithName) Reset() { + *x = ListenerRequestWithName{} + mi := &file_vxlan_vxlan_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListenerRequestWithName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenerRequestWithName) ProtoMessage() {} + +func (x *ListenerRequestWithName) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenerRequestWithName.ProtoReflect.Descriptor instead. +func (*ListenerRequestWithName) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{1} +} + +func (x *ListenerRequestWithName) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type Listener struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + MaxMessageSize int32 `protobuf:"varint,3,opt,name=maxMessageSize,proto3" json:"maxMessageSize,omitempty"` + Permanent bool `protobuf:"varint,4,opt,name=permanent,proto3" json:"permanent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Listener) Reset() { + *x = Listener{} + mi := &file_vxlan_vxlan_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Listener) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Listener) ProtoMessage() {} + +func (x *Listener) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Listener.ProtoReflect.Descriptor instead. +func (*Listener) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{2} +} + +func (x *Listener) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Listener) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *Listener) GetMaxMessageSize() int32 { + if x != nil { + return x.MaxMessageSize + } + return 0 +} + +func (x *Listener) GetPermanent() bool { + if x != nil { + return x.Permanent + } + return false +} + +type ListListenersReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Listeners []*Listener `protobuf:"bytes,1,rep,name=listeners,proto3" json:"listeners,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListListenersReply) Reset() { + *x = ListListenersReply{} + mi := &file_vxlan_vxlan_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListListenersReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListListenersReply) ProtoMessage() {} + +func (x *ListListenersReply) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListListenersReply.ProtoReflect.Descriptor instead. +func (*ListListenersReply) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{3} +} + +func (x *ListListenersReply) GetListeners() []*Listener { + if x != nil { + return x.Listeners + } + return nil +} + +type ListenerMaxMessageSizeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Size int32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListenerMaxMessageSizeRequest) Reset() { + *x = ListenerMaxMessageSizeRequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListenerMaxMessageSizeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenerMaxMessageSizeRequest) ProtoMessage() {} + +func (x *ListenerMaxMessageSizeRequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenerMaxMessageSizeRequest.ProtoReflect.Descriptor instead. +func (*ListenerMaxMessageSizeRequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{4} +} + +func (x *ListenerMaxMessageSizeRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ListenerMaxMessageSizeRequest) GetSize() int32 { + if x != nil { + return x.Size + } + return 0 +} + +type ListenerMaxMessageSizeReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Size int32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListenerMaxMessageSizeReply) Reset() { + *x = ListenerMaxMessageSizeReply{} + mi := &file_vxlan_vxlan_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListenerMaxMessageSizeReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenerMaxMessageSizeReply) ProtoMessage() {} + +func (x *ListenerMaxMessageSizeReply) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenerMaxMessageSizeReply.ProtoReflect.Descriptor instead. +func (*ListenerMaxMessageSizeReply) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{5} +} + +func (x *ListenerMaxMessageSizeReply) GetSize() int32 { + if x != nil { + return x.Size + } + return 0 +} + +// Interface messages. +type Interface struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Vni uint32 `protobuf:"varint,2,opt,name=vni,proto3" json:"vni,omitempty"` + Mtu int32 `protobuf:"varint,3,opt,name=mtu,proto3" json:"mtu,omitempty"` + Permanent bool `protobuf:"varint,4,opt,name=permanent,proto3" json:"permanent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Interface) Reset() { + *x = Interface{} + mi := &file_vxlan_vxlan_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Interface) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interface) ProtoMessage() {} + +func (x *Interface) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interface.ProtoReflect.Descriptor instead. +func (*Interface) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{6} +} + +func (x *Interface) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Interface) GetVni() uint32 { + if x != nil { + return x.Vni + } + return 0 +} + +func (x *Interface) GetMtu() int32 { + if x != nil { + return x.Mtu + } + return 0 +} + +func (x *Interface) GetPermanent() bool { + if x != nil { + return x.Permanent + } + return false +} + +type ListInterfacesReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Interfaces []*Interface `protobuf:"bytes,1,rep,name=interfaces,proto3" json:"interfaces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListInterfacesReply) Reset() { + *x = ListInterfacesReply{} + mi := &file_vxlan_vxlan_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListInterfacesReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListInterfacesReply) ProtoMessage() {} + +func (x *ListInterfacesReply) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListInterfacesReply.ProtoReflect.Descriptor instead. +func (*ListInterfacesReply) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{7} +} + +func (x *ListInterfacesReply) GetInterfaces() []*Interface { + if x != nil { + return x.Interfaces + } + return nil +} + +type AddInterfaceRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Vni uint32 `protobuf:"varint,3,opt,name=vni,proto3" json:"vni,omitempty"` + Mtu int32 `protobuf:"varint,4,opt,name=mtu,proto3" json:"mtu,omitempty"` + Permanent bool `protobuf:"varint,5,opt,name=permanent,proto3" json:"permanent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AddInterfaceRequest) Reset() { + *x = AddInterfaceRequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AddInterfaceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddInterfaceRequest) ProtoMessage() {} + +func (x *AddInterfaceRequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddInterfaceRequest.ProtoReflect.Descriptor instead. +func (*AddInterfaceRequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{8} +} + +func (x *AddInterfaceRequest) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *AddInterfaceRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AddInterfaceRequest) GetVni() uint32 { + if x != nil { + return x.Vni + } + return 0 +} + +func (x *AddInterfaceRequest) GetMtu() int32 { + if x != nil { + return x.Mtu + } + return 0 +} + +func (x *AddInterfaceRequest) GetPermanent() bool { + if x != nil { + return x.Permanent + } + return false +} + +type InterfaceRequestWithName struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceRequestWithName) Reset() { + *x = InterfaceRequestWithName{} + mi := &file_vxlan_vxlan_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceRequestWithName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceRequestWithName) ProtoMessage() {} + +func (x *InterfaceRequestWithName) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceRequestWithName.ProtoReflect.Descriptor instead. +func (*InterfaceRequestWithName) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{9} +} + +func (x *InterfaceRequestWithName) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *InterfaceRequestWithName) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type InterfaceMTURequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Mtu int32 `protobuf:"varint,3,opt,name=mtu,proto3" json:"mtu,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceMTURequest) Reset() { + *x = InterfaceMTURequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceMTURequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceMTURequest) ProtoMessage() {} + +func (x *InterfaceMTURequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceMTURequest.ProtoReflect.Descriptor instead. +func (*InterfaceMTURequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{10} +} + +func (x *InterfaceMTURequest) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *InterfaceMTURequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InterfaceMTURequest) GetMtu() int32 { + if x != nil { + return x.Mtu + } + return 0 +} + +type InterfaceMTUReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Mtu int32 `protobuf:"varint,1,opt,name=mtu,proto3" json:"mtu,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceMTUReply) Reset() { + *x = InterfaceMTUReply{} + mi := &file_vxlan_vxlan_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceMTUReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceMTUReply) ProtoMessage() {} + +func (x *InterfaceMTUReply) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceMTUReply.ProtoReflect.Descriptor instead. +func (*InterfaceMTUReply) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{11} +} + +func (x *InterfaceMTUReply) GetMtu() int32 { + if x != nil { + return x.Mtu + } + return 0 +} + +type InterfaceMACAddressRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Mac string `protobuf:"bytes,3,opt,name=mac,proto3" json:"mac,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceMACAddressRequest) Reset() { + *x = InterfaceMACAddressRequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceMACAddressRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceMACAddressRequest) ProtoMessage() {} + +func (x *InterfaceMACAddressRequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceMACAddressRequest.ProtoReflect.Descriptor instead. +func (*InterfaceMACAddressRequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{12} +} + +func (x *InterfaceMACAddressRequest) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *InterfaceMACAddressRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InterfaceMACAddressRequest) GetMac() string { + if x != nil { + return x.Mac + } + return "" +} + +type InterfaceMACAddressReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Mac string `protobuf:"bytes,1,opt,name=mac,proto3" json:"mac,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceMACAddressReply) Reset() { + *x = InterfaceMACAddressReply{} + mi := &file_vxlan_vxlan_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceMACAddressReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceMACAddressReply) ProtoMessage() {} + +func (x *InterfaceMACAddressReply) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceMACAddressReply.ProtoReflect.Descriptor instead. +func (*InterfaceMACAddressReply) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{13} +} + +func (x *InterfaceMACAddressReply) GetMac() string { + if x != nil { + return x.Mac + } + return "" +} + +type InterfaceIPAddressesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + IpAddress []string `protobuf:"bytes,3,rep,name=ipAddress,proto3" json:"ipAddress,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceIPAddressesRequest) Reset() { + *x = InterfaceIPAddressesRequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceIPAddressesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceIPAddressesRequest) ProtoMessage() {} + +func (x *InterfaceIPAddressesRequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceIPAddressesRequest.ProtoReflect.Descriptor instead. +func (*InterfaceIPAddressesRequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{14} +} + +func (x *InterfaceIPAddressesRequest) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *InterfaceIPAddressesRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InterfaceIPAddressesRequest) GetIpAddress() []string { + if x != nil { + return x.IpAddress + } + return nil +} + +type InterfaceIPAddressesReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + IpAddress []string `protobuf:"bytes,1,rep,name=ipAddress,proto3" json:"ipAddress,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceIPAddressesReply) Reset() { + *x = InterfaceIPAddressesReply{} + mi := &file_vxlan_vxlan_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceIPAddressesReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceIPAddressesReply) ProtoMessage() {} + +func (x *InterfaceIPAddressesReply) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceIPAddressesReply.ProtoReflect.Descriptor instead. +func (*InterfaceIPAddressesReply) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{15} +} + +func (x *InterfaceIPAddressesReply) GetIpAddress() []string { + if x != nil { + return x.IpAddress + } + return nil +} + +type InterfaceMacEntryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Mac string `protobuf:"bytes,3,opt,name=mac,proto3" json:"mac,omitempty"` + Destination string `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` + Permanent bool `protobuf:"varint,5,opt,name=permanent,proto3" json:"permanent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceMacEntryRequest) Reset() { + *x = InterfaceMacEntryRequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceMacEntryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceMacEntryRequest) ProtoMessage() {} + +func (x *InterfaceMacEntryRequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceMacEntryRequest.ProtoReflect.Descriptor instead. +func (*InterfaceMacEntryRequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{16} +} + +func (x *InterfaceMacEntryRequest) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *InterfaceMacEntryRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InterfaceMacEntryRequest) GetMac() string { + if x != nil { + return x.Mac + } + return "" +} + +func (x *InterfaceMacEntryRequest) GetDestination() string { + if x != nil { + return x.Destination + } + return "" +} + +func (x *InterfaceMacEntryRequest) GetPermanent() bool { + if x != nil { + return x.Permanent + } + return false +} + +type InterfaceRemoveMacEntryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Mac string `protobuf:"bytes,3,opt,name=mac,proto3" json:"mac,omitempty"` + Destination string `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceRemoveMacEntryRequest) Reset() { + *x = InterfaceRemoveMacEntryRequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceRemoveMacEntryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceRemoveMacEntryRequest) ProtoMessage() {} + +func (x *InterfaceRemoveMacEntryRequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceRemoveMacEntryRequest.ProtoReflect.Descriptor instead. +func (*InterfaceRemoveMacEntryRequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{17} +} + +func (x *InterfaceRemoveMacEntryRequest) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *InterfaceRemoveMacEntryRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InterfaceRemoveMacEntryRequest) GetMac() string { + if x != nil { + return x.Mac + } + return "" +} + +func (x *InterfaceRemoveMacEntryRequest) GetDestination() string { + if x != nil { + return x.Destination + } + return "" +} + +type MacEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + Mac string `protobuf:"bytes,1,opt,name=mac,proto3" json:"mac,omitempty"` + Destination string `protobuf:"bytes,2,opt,name=destination,proto3" json:"destination,omitempty"` + Permanent bool `protobuf:"varint,3,opt,name=permanent,proto3" json:"permanent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MacEntry) Reset() { + *x = MacEntry{} + mi := &file_vxlan_vxlan_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MacEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MacEntry) ProtoMessage() {} + +func (x *MacEntry) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MacEntry.ProtoReflect.Descriptor instead. +func (*MacEntry) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{18} +} + +func (x *MacEntry) GetMac() string { + if x != nil { + return x.Mac + } + return "" +} + +func (x *MacEntry) GetDestination() string { + if x != nil { + return x.Destination + } + return "" +} + +func (x *MacEntry) GetPermanent() bool { + if x != nil { + return x.Permanent + } + return false +} + +type InterfaceMacEntryReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Entries []*MacEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceMacEntryReply) Reset() { + *x = InterfaceMacEntryReply{} + mi := &file_vxlan_vxlan_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceMacEntryReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceMacEntryReply) ProtoMessage() {} + +func (x *InterfaceMacEntryReply) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceMacEntryReply.ProtoReflect.Descriptor instead. +func (*InterfaceMacEntryReply) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{19} +} + +func (x *InterfaceMacEntryReply) GetEntries() []*MacEntry { + if x != nil { + return x.Entries + } + return nil +} + +type InterfaceARPEntryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + Mac string `protobuf:"bytes,4,opt,name=mac,proto3" json:"mac,omitempty"` + Permanent bool `protobuf:"varint,5,opt,name=permanent,proto3" json:"permanent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceARPEntryRequest) Reset() { + *x = InterfaceARPEntryRequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceARPEntryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceARPEntryRequest) ProtoMessage() {} + +func (x *InterfaceARPEntryRequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceARPEntryRequest.ProtoReflect.Descriptor instead. +func (*InterfaceARPEntryRequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{20} +} + +func (x *InterfaceARPEntryRequest) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *InterfaceARPEntryRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InterfaceARPEntryRequest) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *InterfaceARPEntryRequest) GetMac() string { + if x != nil { + return x.Mac + } + return "" +} + +func (x *InterfaceARPEntryRequest) GetPermanent() bool { + if x != nil { + return x.Permanent + } + return false +} + +type InterfaceRemoveARPEntryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ListenerName string `protobuf:"bytes,1,opt,name=listenerName,proto3" json:"listenerName,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceRemoveARPEntryRequest) Reset() { + *x = InterfaceRemoveARPEntryRequest{} + mi := &file_vxlan_vxlan_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceRemoveARPEntryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceRemoveARPEntryRequest) ProtoMessage() {} + +func (x *InterfaceRemoveARPEntryRequest) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceRemoveARPEntryRequest.ProtoReflect.Descriptor instead. +func (*InterfaceRemoveARPEntryRequest) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{21} +} + +func (x *InterfaceRemoveARPEntryRequest) GetListenerName() string { + if x != nil { + return x.ListenerName + } + return "" +} + +func (x *InterfaceRemoveARPEntryRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InterfaceRemoveARPEntryRequest) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +type ArpEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Mac string `protobuf:"bytes,2,opt,name=mac,proto3" json:"mac,omitempty"` + Expires string `protobuf:"bytes,3,opt,name=expires,proto3" json:"expires,omitempty"` + Permanent bool `protobuf:"varint,4,opt,name=permanent,proto3" json:"permanent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArpEntry) Reset() { + *x = ArpEntry{} + mi := &file_vxlan_vxlan_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArpEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArpEntry) ProtoMessage() {} + +func (x *ArpEntry) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArpEntry.ProtoReflect.Descriptor instead. +func (*ArpEntry) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{22} +} + +func (x *ArpEntry) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *ArpEntry) GetMac() string { + if x != nil { + return x.Mac + } + return "" +} + +func (x *ArpEntry) GetExpires() string { + if x != nil { + return x.Expires + } + return "" +} + +func (x *ArpEntry) GetPermanent() bool { + if x != nil { + return x.Permanent + } + return false +} + +type InterfaceArpEntryReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Entries []*ArpEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceArpEntryReply) Reset() { + *x = InterfaceArpEntryReply{} + mi := &file_vxlan_vxlan_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceArpEntryReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceArpEntryReply) ProtoMessage() {} + +func (x *InterfaceArpEntryReply) ProtoReflect() protoreflect.Message { + mi := &file_vxlan_vxlan_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceArpEntryReply.ProtoReflect.Descriptor instead. +func (*InterfaceArpEntryReply) Descriptor() ([]byte, []int) { + return file_vxlan_vxlan_proto_rawDescGZIP(), []int{23} +} + +func (x *InterfaceArpEntryReply) GetEntries() []*ArpEntry { + if x != nil { + return x.Entries + } + return nil +} + +var File_vxlan_vxlan_proto protoreflect.FileDescriptor + +var file_vxlan_vxlan_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x2d, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0e, + 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, + 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x47, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x22, 0x31, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x22, 0x61, 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x6e, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x03, 0x76, 0x6e, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x6d, + 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x65, 0x72, + 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x47, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x30, 0x0a, + 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x22, + 0x8f, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x76, 0x6e, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x76, 0x6e, + 0x69, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6d, 0x74, 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, + 0x74, 0x22, 0x52, 0x0a, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x4d, 0x54, 0x55, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x22, 0x25, 0x0a, 0x11, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x4d, 0x54, 0x55, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6d, + 0x74, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x22, 0x66, 0x0a, + 0x1a, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, 0x41, 0x43, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x61, 0x63, 0x22, 0x2c, 0x0a, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x4d, 0x41, 0x43, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6d, 0x61, 0x63, 0x22, 0x73, 0x0a, 0x1b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x70, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, + 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x39, 0x0a, 0x19, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, + 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x08, 0x4d, 0x61, 0x63, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x72, + 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x65, + 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x12, 0x29, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x4d, 0x61, 0x63, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x9c, 0x01, 0x0a, + 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x52, 0x50, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, + 0x61, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x72, 0x0a, 0x1e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x52, + 0x50, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, + 0x6e, 0x0a, 0x08, 0x41, 0x72, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x22, + 0x43, 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x72, 0x70, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x07, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x78, 0x6c, + 0x61, 0x6e, 0x2e, 0x41, 0x72, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x32, 0x88, 0x0e, 0x0a, 0x05, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x12, 0x2a, + 0x0a, 0x0a, 0x53, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0c, 0x2e, 0x76, + 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, + 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x0c, 0x52, 0x65, + 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0c, 0x2e, 0x76, 0x78, 0x6c, + 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, + 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x12, 0x0f, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, + 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x24, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, + 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, + 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x22, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0e, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1e, + 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x1a, + 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0c, + 0x41, 0x64, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x1a, 0x2e, 0x76, + 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x0c, 0x2e, 0x76, + 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0f, + 0x53, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, 0x54, 0x55, 0x12, + 0x1a, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x4d, 0x54, 0x55, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, 0x54, 0x55, 0x12, 0x1f, + 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, + 0x18, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x4d, 0x54, 0x55, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x16, 0x53, + 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, 0x41, 0x43, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, 0x41, 0x43, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, 0x41, 0x43, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x1f, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, + 0x61, 0x6d, 0x65, 0x1a, 0x1f, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, 0x41, 0x43, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x12, 0x22, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x12, 0x1f, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, + 0x65, 0x1a, 0x20, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x14, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x41, 0x64, 0x64, 0x4d, 0x41, 0x43, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1f, 0x2e, + 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, + 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, + 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x50, + 0x0a, 0x17, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x41, 0x43, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x25, 0x2e, 0x76, 0x78, 0x6c, 0x61, + 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x12, 0x5a, 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x47, 0x65, 0x74, + 0x4d, 0x41, 0x43, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x76, 0x78, 0x6c, + 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x1d, 0x2e, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4d, 0x61, 0x63, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x16, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x4d, 0x41, + 0x43, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, + 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x1a, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x41, 0x64, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x52, 0x50, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x52, 0x50, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x17, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x52, 0x50, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x25, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x52, 0x50, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x47, 0x65, 0x74, 0x41, 0x52, 0x50, 0x45, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, + 0x61, 0x6d, 0x65, 0x1a, 0x1d, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x72, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x41, 0x52, 0x50, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, + 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, + 0x0c, 0x2e, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, + 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, + 0x6d, 0x72, 0x67, 0x65, 0x63, 0x6b, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x2d, + 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x2f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_vxlan_vxlan_proto_rawDescOnce sync.Once + file_vxlan_vxlan_proto_rawDescData = file_vxlan_vxlan_proto_rawDesc +) + +func file_vxlan_vxlan_proto_rawDescGZIP() []byte { + file_vxlan_vxlan_proto_rawDescOnce.Do(func() { + file_vxlan_vxlan_proto_rawDescData = protoimpl.X.CompressGZIP(file_vxlan_vxlan_proto_rawDescData) + }) + return file_vxlan_vxlan_proto_rawDescData +} + +var file_vxlan_vxlan_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_vxlan_vxlan_proto_goTypes = []any{ + (*Empty)(nil), // 0: vxlan.Empty + (*ListenerRequestWithName)(nil), // 1: vxlan.ListenerRequestWithName + (*Listener)(nil), // 2: vxlan.Listener + (*ListListenersReply)(nil), // 3: vxlan.ListListenersReply + (*ListenerMaxMessageSizeRequest)(nil), // 4: vxlan.ListenerMaxMessageSizeRequest + (*ListenerMaxMessageSizeReply)(nil), // 5: vxlan.ListenerMaxMessageSizeReply + (*Interface)(nil), // 6: vxlan.Interface + (*ListInterfacesReply)(nil), // 7: vxlan.ListInterfacesReply + (*AddInterfaceRequest)(nil), // 8: vxlan.AddInterfaceRequest + (*InterfaceRequestWithName)(nil), // 9: vxlan.InterfaceRequestWithName + (*InterfaceMTURequest)(nil), // 10: vxlan.InterfaceMTURequest + (*InterfaceMTUReply)(nil), // 11: vxlan.InterfaceMTUReply + (*InterfaceMACAddressRequest)(nil), // 12: vxlan.InterfaceMACAddressRequest + (*InterfaceMACAddressReply)(nil), // 13: vxlan.InterfaceMACAddressReply + (*InterfaceIPAddressesRequest)(nil), // 14: vxlan.InterfaceIPAddressesRequest + (*InterfaceIPAddressesReply)(nil), // 15: vxlan.InterfaceIPAddressesReply + (*InterfaceMacEntryRequest)(nil), // 16: vxlan.InterfaceMacEntryRequest + (*InterfaceRemoveMacEntryRequest)(nil), // 17: vxlan.InterfaceRemoveMacEntryRequest + (*MacEntry)(nil), // 18: vxlan.MacEntry + (*InterfaceMacEntryReply)(nil), // 19: vxlan.InterfaceMacEntryReply + (*InterfaceARPEntryRequest)(nil), // 20: vxlan.InterfaceARPEntryRequest + (*InterfaceRemoveARPEntryRequest)(nil), // 21: vxlan.InterfaceRemoveARPEntryRequest + (*ArpEntry)(nil), // 22: vxlan.ArpEntry + (*InterfaceArpEntryReply)(nil), // 23: vxlan.InterfaceArpEntryReply +} +var file_vxlan_vxlan_proto_depIdxs = []int32{ + 2, // 0: vxlan.ListListenersReply.listeners:type_name -> vxlan.Listener + 6, // 1: vxlan.ListInterfacesReply.interfaces:type_name -> vxlan.Interface + 18, // 2: vxlan.InterfaceMacEntryReply.entries:type_name -> vxlan.MacEntry + 22, // 3: vxlan.InterfaceArpEntryReply.entries:type_name -> vxlan.ArpEntry + 0, // 4: vxlan.vxlan.SaveConfig:input_type -> vxlan.Empty + 0, // 5: vxlan.vxlan.ReloadConfig:input_type -> vxlan.Empty + 0, // 6: vxlan.vxlan.ListListeners:input_type -> vxlan.Empty + 2, // 7: vxlan.vxlan.AddListener:input_type -> vxlan.Listener + 1, // 8: vxlan.vxlan.RemoveListener:input_type -> vxlan.ListenerRequestWithName + 4, // 9: vxlan.vxlan.SetListenerMaxMessageSize:input_type -> vxlan.ListenerMaxMessageSizeRequest + 1, // 10: vxlan.vxlan.GetListenerMaxMessageSize:input_type -> vxlan.ListenerRequestWithName + 1, // 11: vxlan.vxlan.ListInterfaces:input_type -> vxlan.ListenerRequestWithName + 8, // 12: vxlan.vxlan.AddInterface:input_type -> vxlan.AddInterfaceRequest + 9, // 13: vxlan.vxlan.RemoveInterface:input_type -> vxlan.InterfaceRequestWithName + 10, // 14: vxlan.vxlan.SetInterfaceMTU:input_type -> vxlan.InterfaceMTURequest + 9, // 15: vxlan.vxlan.GetInterfaceMTU:input_type -> vxlan.InterfaceRequestWithName + 12, // 16: vxlan.vxlan.SetInterfaceMACAddress:input_type -> vxlan.InterfaceMACAddressRequest + 9, // 17: vxlan.vxlan.GetInterfaceMACAddress:input_type -> vxlan.InterfaceRequestWithName + 14, // 18: vxlan.vxlan.SetInterfaceIPAddresses:input_type -> vxlan.InterfaceIPAddressesRequest + 9, // 19: vxlan.vxlan.GetInterfaceIPAddresses:input_type -> vxlan.InterfaceRequestWithName + 16, // 20: vxlan.vxlan.InterfaceAddMACEntry:input_type -> vxlan.InterfaceMacEntryRequest + 17, // 21: vxlan.vxlan.InterfaceRemoveMACEntry:input_type -> vxlan.InterfaceRemoveMacEntryRequest + 9, // 22: vxlan.vxlan.InterfaceGetMACEntries:input_type -> vxlan.InterfaceRequestWithName + 9, // 23: vxlan.vxlan.InterfaceFlushMACTable:input_type -> vxlan.InterfaceRequestWithName + 20, // 24: vxlan.vxlan.InterfaceAddStaticARPEntry:input_type -> vxlan.InterfaceARPEntryRequest + 21, // 25: vxlan.vxlan.InterfaceRemoveARPEntry:input_type -> vxlan.InterfaceRemoveARPEntryRequest + 9, // 26: vxlan.vxlan.InterfaceGetARPEntries:input_type -> vxlan.InterfaceRequestWithName + 9, // 27: vxlan.vxlan.InterfaceFlushARPTable:input_type -> vxlan.InterfaceRequestWithName + 0, // 28: vxlan.vxlan.SaveConfig:output_type -> vxlan.Empty + 0, // 29: vxlan.vxlan.ReloadConfig:output_type -> vxlan.Empty + 3, // 30: vxlan.vxlan.ListListeners:output_type -> vxlan.ListListenersReply + 0, // 31: vxlan.vxlan.AddListener:output_type -> vxlan.Empty + 0, // 32: vxlan.vxlan.RemoveListener:output_type -> vxlan.Empty + 0, // 33: vxlan.vxlan.SetListenerMaxMessageSize:output_type -> vxlan.Empty + 5, // 34: vxlan.vxlan.GetListenerMaxMessageSize:output_type -> vxlan.ListenerMaxMessageSizeReply + 7, // 35: vxlan.vxlan.ListInterfaces:output_type -> vxlan.ListInterfacesReply + 0, // 36: vxlan.vxlan.AddInterface:output_type -> vxlan.Empty + 0, // 37: vxlan.vxlan.RemoveInterface:output_type -> vxlan.Empty + 0, // 38: vxlan.vxlan.SetInterfaceMTU:output_type -> vxlan.Empty + 11, // 39: vxlan.vxlan.GetInterfaceMTU:output_type -> vxlan.InterfaceMTUReply + 0, // 40: vxlan.vxlan.SetInterfaceMACAddress:output_type -> vxlan.Empty + 13, // 41: vxlan.vxlan.GetInterfaceMACAddress:output_type -> vxlan.InterfaceMACAddressReply + 0, // 42: vxlan.vxlan.SetInterfaceIPAddresses:output_type -> vxlan.Empty + 15, // 43: vxlan.vxlan.GetInterfaceIPAddresses:output_type -> vxlan.InterfaceIPAddressesReply + 0, // 44: vxlan.vxlan.InterfaceAddMACEntry:output_type -> vxlan.Empty + 0, // 45: vxlan.vxlan.InterfaceRemoveMACEntry:output_type -> vxlan.Empty + 19, // 46: vxlan.vxlan.InterfaceGetMACEntries:output_type -> vxlan.InterfaceMacEntryReply + 0, // 47: vxlan.vxlan.InterfaceFlushMACTable:output_type -> vxlan.Empty + 0, // 48: vxlan.vxlan.InterfaceAddStaticARPEntry:output_type -> vxlan.Empty + 0, // 49: vxlan.vxlan.InterfaceRemoveARPEntry:output_type -> vxlan.Empty + 23, // 50: vxlan.vxlan.InterfaceGetARPEntries:output_type -> vxlan.InterfaceArpEntryReply + 0, // 51: vxlan.vxlan.InterfaceFlushARPTable:output_type -> vxlan.Empty + 28, // [28:52] is the sub-list for method output_type + 4, // [4:28] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_vxlan_vxlan_proto_init() } +func file_vxlan_vxlan_proto_init() { + if File_vxlan_vxlan_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_vxlan_vxlan_proto_rawDesc, + NumEnums: 0, + NumMessages: 24, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_vxlan_vxlan_proto_goTypes, + DependencyIndexes: file_vxlan_vxlan_proto_depIdxs, + MessageInfos: file_vxlan_vxlan_proto_msgTypes, + }.Build() + File_vxlan_vxlan_proto = out.File + file_vxlan_vxlan_proto_rawDesc = nil + file_vxlan_vxlan_proto_goTypes = nil + file_vxlan_vxlan_proto_depIdxs = nil +} diff --git a/vxlan/vxlan.proto b/vxlan/vxlan.proto new file mode 100644 index 0000000..72389b0 --- /dev/null +++ b/vxlan/vxlan.proto @@ -0,0 +1,170 @@ +syntax = "proto3"; +option go_package = "github.com/grmrgecko/virtual-vxlan/vxlan"; + +package vxlan; + +service vxlan { + // Config commands. + rpc SaveConfig (Empty) returns (Empty) {} + rpc ReloadConfig (Empty) returns (Empty) {} + + // Listener commands. + rpc ListListeners (Empty) returns (ListListenersReply) {} + rpc AddListener (Listener) returns (Empty) {} + rpc RemoveListener (ListenerRequestWithName) returns (Empty) {} + rpc SetListenerMaxMessageSize (ListenerMaxMessageSizeRequest) returns (Empty) {} + rpc GetListenerMaxMessageSize (ListenerRequestWithName) returns (ListenerMaxMessageSizeReply) {} + + // Interface commands. + rpc ListInterfaces (ListenerRequestWithName) returns (ListInterfacesReply) {} + rpc AddInterface (AddInterfaceRequest) returns (Empty) {} + rpc RemoveInterface (InterfaceRequestWithName) returns (Empty) {} + rpc SetInterfaceMTU (InterfaceMTURequest) returns (Empty) {} + rpc GetInterfaceMTU (InterfaceRequestWithName) returns (InterfaceMTUReply) {} + rpc SetInterfaceMACAddress (InterfaceMACAddressRequest) returns (Empty) {} + rpc GetInterfaceMACAddress (InterfaceRequestWithName) returns (InterfaceMACAddressReply) {} + rpc SetInterfaceIPAddresses (InterfaceIPAddressesRequest) returns (Empty) {} + rpc GetInterfaceIPAddresses (InterfaceRequestWithName) returns (InterfaceIPAddressesReply) {} + rpc InterfaceAddMACEntry (InterfaceMacEntryRequest) returns (Empty) {} + rpc InterfaceRemoveMACEntry (InterfaceRemoveMacEntryRequest) returns (Empty) {} + rpc InterfaceGetMACEntries (InterfaceRequestWithName) returns (InterfaceMacEntryReply) {} + rpc InterfaceFlushMACTable (InterfaceRequestWithName) returns (Empty) {} + rpc InterfaceAddStaticARPEntry (InterfaceARPEntryRequest) returns (Empty) {} + rpc InterfaceRemoveARPEntry (InterfaceRemoveARPEntryRequest) returns (Empty) {} + rpc InterfaceGetARPEntries (InterfaceRequestWithName) returns (InterfaceArpEntryReply) {} + rpc InterfaceFlushARPTable (InterfaceRequestWithName) returns (Empty) {} +} + +// Standard empty message. +message Empty { +} + +// Listener messages. +message ListenerRequestWithName { + string name = 1; +} + +message Listener { + string name = 1; + string address = 2; + int32 maxMessageSize = 3; + bool permanent = 4; +} + +message ListListenersReply { + repeated Listener listeners = 1; +} + +message ListenerMaxMessageSizeRequest { + string name = 1; + int32 size = 2; +} + +message ListenerMaxMessageSizeReply { + int32 size = 1; +} + +// Interface messages. +message Interface { + string name = 1; + uint32 vni = 2; + int32 mtu = 3; + bool permanent = 4; +} + +message ListInterfacesReply { + repeated Interface interfaces = 1; +} + +message AddInterfaceRequest { + string listenerName = 1; + string name = 2; + uint32 vni = 3; + int32 mtu = 4; + bool permanent = 5; +} + +message InterfaceRequestWithName { + string listenerName = 1; + string name = 2; +} + +message InterfaceMTURequest { + string listenerName = 1; + string name = 2; + int32 mtu = 3; +} + +message InterfaceMTUReply { + int32 mtu = 1; +} + +message InterfaceMACAddressRequest { + string listenerName = 1; + string name = 2; + string mac = 3; +} + +message InterfaceMACAddressReply { + string mac = 1; +} + +message InterfaceIPAddressesRequest { + string listenerName = 1; + string name = 2; + repeated string ipAddress = 3; +} + +message InterfaceIPAddressesReply { + repeated string ipAddress = 1; +} + +message InterfaceMacEntryRequest { + string listenerName = 1; + string name = 2; + string mac = 3; + string destination = 4; + bool permanent = 5; +} + +message InterfaceRemoveMacEntryRequest { + string listenerName = 1; + string name = 2; + string mac = 3; + string destination = 4; +} + +message MacEntry { + string mac = 1; + string destination = 2; + bool permanent = 3; +} + +message InterfaceMacEntryReply { + repeated MacEntry entries = 1; +} + +message InterfaceARPEntryRequest { + string listenerName = 1; + string name = 2; + string address = 3; + string mac = 4; + bool permanent = 5; +} + +message InterfaceRemoveARPEntryRequest { + string listenerName = 1; + string name = 2; + string address = 3; +} + +message ArpEntry { + string address = 1; + string mac = 2; + string expires = 3; + bool permanent = 4; +} + +message InterfaceArpEntryReply { + repeated ArpEntry entries = 1; +} diff --git a/vxlan/vxlan_grpc.pb.go b/vxlan/vxlan_grpc.pb.go new file mode 100644 index 0000000..e883653 --- /dev/null +++ b/vxlan/vxlan_grpc.pb.go @@ -0,0 +1,1001 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.2 +// source: vxlan/vxlan.proto + +package vxlan + +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.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Vxlan_SaveConfig_FullMethodName = "/vxlan.vxlan/SaveConfig" + Vxlan_ReloadConfig_FullMethodName = "/vxlan.vxlan/ReloadConfig" + Vxlan_ListListeners_FullMethodName = "/vxlan.vxlan/ListListeners" + Vxlan_AddListener_FullMethodName = "/vxlan.vxlan/AddListener" + Vxlan_RemoveListener_FullMethodName = "/vxlan.vxlan/RemoveListener" + Vxlan_SetListenerMaxMessageSize_FullMethodName = "/vxlan.vxlan/SetListenerMaxMessageSize" + Vxlan_GetListenerMaxMessageSize_FullMethodName = "/vxlan.vxlan/GetListenerMaxMessageSize" + Vxlan_ListInterfaces_FullMethodName = "/vxlan.vxlan/ListInterfaces" + Vxlan_AddInterface_FullMethodName = "/vxlan.vxlan/AddInterface" + Vxlan_RemoveInterface_FullMethodName = "/vxlan.vxlan/RemoveInterface" + Vxlan_SetInterfaceMTU_FullMethodName = "/vxlan.vxlan/SetInterfaceMTU" + Vxlan_GetInterfaceMTU_FullMethodName = "/vxlan.vxlan/GetInterfaceMTU" + Vxlan_SetInterfaceMACAddress_FullMethodName = "/vxlan.vxlan/SetInterfaceMACAddress" + Vxlan_GetInterfaceMACAddress_FullMethodName = "/vxlan.vxlan/GetInterfaceMACAddress" + Vxlan_SetInterfaceIPAddresses_FullMethodName = "/vxlan.vxlan/SetInterfaceIPAddresses" + Vxlan_GetInterfaceIPAddresses_FullMethodName = "/vxlan.vxlan/GetInterfaceIPAddresses" + Vxlan_InterfaceAddMACEntry_FullMethodName = "/vxlan.vxlan/InterfaceAddMACEntry" + Vxlan_InterfaceRemoveMACEntry_FullMethodName = "/vxlan.vxlan/InterfaceRemoveMACEntry" + Vxlan_InterfaceGetMACEntries_FullMethodName = "/vxlan.vxlan/InterfaceGetMACEntries" + Vxlan_InterfaceFlushMACTable_FullMethodName = "/vxlan.vxlan/InterfaceFlushMACTable" + Vxlan_InterfaceAddStaticARPEntry_FullMethodName = "/vxlan.vxlan/InterfaceAddStaticARPEntry" + Vxlan_InterfaceRemoveARPEntry_FullMethodName = "/vxlan.vxlan/InterfaceRemoveARPEntry" + Vxlan_InterfaceGetARPEntries_FullMethodName = "/vxlan.vxlan/InterfaceGetARPEntries" + Vxlan_InterfaceFlushARPTable_FullMethodName = "/vxlan.vxlan/InterfaceFlushARPTable" +) + +// VxlanClient is the client API for Vxlan 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 VxlanClient interface { + // Config commands. + SaveConfig(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) + ReloadConfig(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) + // Listener commands. + ListListeners(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListListenersReply, error) + AddListener(ctx context.Context, in *Listener, opts ...grpc.CallOption) (*Empty, error) + RemoveListener(ctx context.Context, in *ListenerRequestWithName, opts ...grpc.CallOption) (*Empty, error) + SetListenerMaxMessageSize(ctx context.Context, in *ListenerMaxMessageSizeRequest, opts ...grpc.CallOption) (*Empty, error) + GetListenerMaxMessageSize(ctx context.Context, in *ListenerRequestWithName, opts ...grpc.CallOption) (*ListenerMaxMessageSizeReply, error) + // Interface commands. + ListInterfaces(ctx context.Context, in *ListenerRequestWithName, opts ...grpc.CallOption) (*ListInterfacesReply, error) + AddInterface(ctx context.Context, in *AddInterfaceRequest, opts ...grpc.CallOption) (*Empty, error) + RemoveInterface(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*Empty, error) + SetInterfaceMTU(ctx context.Context, in *InterfaceMTURequest, opts ...grpc.CallOption) (*Empty, error) + GetInterfaceMTU(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceMTUReply, error) + SetInterfaceMACAddress(ctx context.Context, in *InterfaceMACAddressRequest, opts ...grpc.CallOption) (*Empty, error) + GetInterfaceMACAddress(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceMACAddressReply, error) + SetInterfaceIPAddresses(ctx context.Context, in *InterfaceIPAddressesRequest, opts ...grpc.CallOption) (*Empty, error) + GetInterfaceIPAddresses(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceIPAddressesReply, error) + InterfaceAddMACEntry(ctx context.Context, in *InterfaceMacEntryRequest, opts ...grpc.CallOption) (*Empty, error) + InterfaceRemoveMACEntry(ctx context.Context, in *InterfaceRemoveMacEntryRequest, opts ...grpc.CallOption) (*Empty, error) + InterfaceGetMACEntries(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceMacEntryReply, error) + InterfaceFlushMACTable(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*Empty, error) + InterfaceAddStaticARPEntry(ctx context.Context, in *InterfaceARPEntryRequest, opts ...grpc.CallOption) (*Empty, error) + InterfaceRemoveARPEntry(ctx context.Context, in *InterfaceRemoveARPEntryRequest, opts ...grpc.CallOption) (*Empty, error) + InterfaceGetARPEntries(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceArpEntryReply, error) + InterfaceFlushARPTable(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*Empty, error) +} + +type vxlanClient struct { + cc grpc.ClientConnInterface +} + +func NewVxlanClient(cc grpc.ClientConnInterface) VxlanClient { + return &vxlanClient{cc} +} + +func (c *vxlanClient) SaveConfig(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_SaveConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) ReloadConfig(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_ReloadConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) ListListeners(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListListenersReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListListenersReply) + err := c.cc.Invoke(ctx, Vxlan_ListListeners_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) AddListener(ctx context.Context, in *Listener, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_AddListener_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) RemoveListener(ctx context.Context, in *ListenerRequestWithName, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_RemoveListener_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) SetListenerMaxMessageSize(ctx context.Context, in *ListenerMaxMessageSizeRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_SetListenerMaxMessageSize_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) GetListenerMaxMessageSize(ctx context.Context, in *ListenerRequestWithName, opts ...grpc.CallOption) (*ListenerMaxMessageSizeReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListenerMaxMessageSizeReply) + err := c.cc.Invoke(ctx, Vxlan_GetListenerMaxMessageSize_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) ListInterfaces(ctx context.Context, in *ListenerRequestWithName, opts ...grpc.CallOption) (*ListInterfacesReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListInterfacesReply) + err := c.cc.Invoke(ctx, Vxlan_ListInterfaces_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) AddInterface(ctx context.Context, in *AddInterfaceRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_AddInterface_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) RemoveInterface(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_RemoveInterface_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) SetInterfaceMTU(ctx context.Context, in *InterfaceMTURequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_SetInterfaceMTU_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) GetInterfaceMTU(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceMTUReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(InterfaceMTUReply) + err := c.cc.Invoke(ctx, Vxlan_GetInterfaceMTU_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) SetInterfaceMACAddress(ctx context.Context, in *InterfaceMACAddressRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_SetInterfaceMACAddress_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) GetInterfaceMACAddress(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceMACAddressReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(InterfaceMACAddressReply) + err := c.cc.Invoke(ctx, Vxlan_GetInterfaceMACAddress_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) SetInterfaceIPAddresses(ctx context.Context, in *InterfaceIPAddressesRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_SetInterfaceIPAddresses_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) GetInterfaceIPAddresses(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceIPAddressesReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(InterfaceIPAddressesReply) + err := c.cc.Invoke(ctx, Vxlan_GetInterfaceIPAddresses_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) InterfaceAddMACEntry(ctx context.Context, in *InterfaceMacEntryRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_InterfaceAddMACEntry_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) InterfaceRemoveMACEntry(ctx context.Context, in *InterfaceRemoveMacEntryRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_InterfaceRemoveMACEntry_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) InterfaceGetMACEntries(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceMacEntryReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(InterfaceMacEntryReply) + err := c.cc.Invoke(ctx, Vxlan_InterfaceGetMACEntries_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) InterfaceFlushMACTable(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_InterfaceFlushMACTable_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) InterfaceAddStaticARPEntry(ctx context.Context, in *InterfaceARPEntryRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_InterfaceAddStaticARPEntry_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) InterfaceRemoveARPEntry(ctx context.Context, in *InterfaceRemoveARPEntryRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_InterfaceRemoveARPEntry_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) InterfaceGetARPEntries(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*InterfaceArpEntryReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(InterfaceArpEntryReply) + err := c.cc.Invoke(ctx, Vxlan_InterfaceGetARPEntries_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vxlanClient) InterfaceFlushARPTable(ctx context.Context, in *InterfaceRequestWithName, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, Vxlan_InterfaceFlushARPTable_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// VxlanServer is the server API for Vxlan service. +// All implementations must embed UnimplementedVxlanServer +// for forward compatibility. +type VxlanServer interface { + // Config commands. + SaveConfig(context.Context, *Empty) (*Empty, error) + ReloadConfig(context.Context, *Empty) (*Empty, error) + // Listener commands. + ListListeners(context.Context, *Empty) (*ListListenersReply, error) + AddListener(context.Context, *Listener) (*Empty, error) + RemoveListener(context.Context, *ListenerRequestWithName) (*Empty, error) + SetListenerMaxMessageSize(context.Context, *ListenerMaxMessageSizeRequest) (*Empty, error) + GetListenerMaxMessageSize(context.Context, *ListenerRequestWithName) (*ListenerMaxMessageSizeReply, error) + // Interface commands. + ListInterfaces(context.Context, *ListenerRequestWithName) (*ListInterfacesReply, error) + AddInterface(context.Context, *AddInterfaceRequest) (*Empty, error) + RemoveInterface(context.Context, *InterfaceRequestWithName) (*Empty, error) + SetInterfaceMTU(context.Context, *InterfaceMTURequest) (*Empty, error) + GetInterfaceMTU(context.Context, *InterfaceRequestWithName) (*InterfaceMTUReply, error) + SetInterfaceMACAddress(context.Context, *InterfaceMACAddressRequest) (*Empty, error) + GetInterfaceMACAddress(context.Context, *InterfaceRequestWithName) (*InterfaceMACAddressReply, error) + SetInterfaceIPAddresses(context.Context, *InterfaceIPAddressesRequest) (*Empty, error) + GetInterfaceIPAddresses(context.Context, *InterfaceRequestWithName) (*InterfaceIPAddressesReply, error) + InterfaceAddMACEntry(context.Context, *InterfaceMacEntryRequest) (*Empty, error) + InterfaceRemoveMACEntry(context.Context, *InterfaceRemoveMacEntryRequest) (*Empty, error) + InterfaceGetMACEntries(context.Context, *InterfaceRequestWithName) (*InterfaceMacEntryReply, error) + InterfaceFlushMACTable(context.Context, *InterfaceRequestWithName) (*Empty, error) + InterfaceAddStaticARPEntry(context.Context, *InterfaceARPEntryRequest) (*Empty, error) + InterfaceRemoveARPEntry(context.Context, *InterfaceRemoveARPEntryRequest) (*Empty, error) + InterfaceGetARPEntries(context.Context, *InterfaceRequestWithName) (*InterfaceArpEntryReply, error) + InterfaceFlushARPTable(context.Context, *InterfaceRequestWithName) (*Empty, error) + mustEmbedUnimplementedVxlanServer() +} + +// UnimplementedVxlanServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedVxlanServer struct{} + +func (UnimplementedVxlanServer) SaveConfig(context.Context, *Empty) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveConfig not implemented") +} +func (UnimplementedVxlanServer) ReloadConfig(context.Context, *Empty) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReloadConfig not implemented") +} +func (UnimplementedVxlanServer) ListListeners(context.Context, *Empty) (*ListListenersReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListListeners not implemented") +} +func (UnimplementedVxlanServer) AddListener(context.Context, *Listener) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddListener not implemented") +} +func (UnimplementedVxlanServer) RemoveListener(context.Context, *ListenerRequestWithName) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveListener not implemented") +} +func (UnimplementedVxlanServer) SetListenerMaxMessageSize(context.Context, *ListenerMaxMessageSizeRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetListenerMaxMessageSize not implemented") +} +func (UnimplementedVxlanServer) GetListenerMaxMessageSize(context.Context, *ListenerRequestWithName) (*ListenerMaxMessageSizeReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetListenerMaxMessageSize not implemented") +} +func (UnimplementedVxlanServer) ListInterfaces(context.Context, *ListenerRequestWithName) (*ListInterfacesReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListInterfaces not implemented") +} +func (UnimplementedVxlanServer) AddInterface(context.Context, *AddInterfaceRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddInterface not implemented") +} +func (UnimplementedVxlanServer) RemoveInterface(context.Context, *InterfaceRequestWithName) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveInterface not implemented") +} +func (UnimplementedVxlanServer) SetInterfaceMTU(context.Context, *InterfaceMTURequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetInterfaceMTU not implemented") +} +func (UnimplementedVxlanServer) GetInterfaceMTU(context.Context, *InterfaceRequestWithName) (*InterfaceMTUReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInterfaceMTU not implemented") +} +func (UnimplementedVxlanServer) SetInterfaceMACAddress(context.Context, *InterfaceMACAddressRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetInterfaceMACAddress not implemented") +} +func (UnimplementedVxlanServer) GetInterfaceMACAddress(context.Context, *InterfaceRequestWithName) (*InterfaceMACAddressReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInterfaceMACAddress not implemented") +} +func (UnimplementedVxlanServer) SetInterfaceIPAddresses(context.Context, *InterfaceIPAddressesRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetInterfaceIPAddresses not implemented") +} +func (UnimplementedVxlanServer) GetInterfaceIPAddresses(context.Context, *InterfaceRequestWithName) (*InterfaceIPAddressesReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInterfaceIPAddresses not implemented") +} +func (UnimplementedVxlanServer) InterfaceAddMACEntry(context.Context, *InterfaceMacEntryRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method InterfaceAddMACEntry not implemented") +} +func (UnimplementedVxlanServer) InterfaceRemoveMACEntry(context.Context, *InterfaceRemoveMacEntryRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method InterfaceRemoveMACEntry not implemented") +} +func (UnimplementedVxlanServer) InterfaceGetMACEntries(context.Context, *InterfaceRequestWithName) (*InterfaceMacEntryReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method InterfaceGetMACEntries not implemented") +} +func (UnimplementedVxlanServer) InterfaceFlushMACTable(context.Context, *InterfaceRequestWithName) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method InterfaceFlushMACTable not implemented") +} +func (UnimplementedVxlanServer) InterfaceAddStaticARPEntry(context.Context, *InterfaceARPEntryRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method InterfaceAddStaticARPEntry not implemented") +} +func (UnimplementedVxlanServer) InterfaceRemoveARPEntry(context.Context, *InterfaceRemoveARPEntryRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method InterfaceRemoveARPEntry not implemented") +} +func (UnimplementedVxlanServer) InterfaceGetARPEntries(context.Context, *InterfaceRequestWithName) (*InterfaceArpEntryReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method InterfaceGetARPEntries not implemented") +} +func (UnimplementedVxlanServer) InterfaceFlushARPTable(context.Context, *InterfaceRequestWithName) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method InterfaceFlushARPTable not implemented") +} +func (UnimplementedVxlanServer) mustEmbedUnimplementedVxlanServer() {} +func (UnimplementedVxlanServer) testEmbeddedByValue() {} + +// UnsafeVxlanServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to VxlanServer will +// result in compilation errors. +type UnsafeVxlanServer interface { + mustEmbedUnimplementedVxlanServer() +} + +func RegisterVxlanServer(s grpc.ServiceRegistrar, srv VxlanServer) { + // If the following call pancis, it indicates UnimplementedVxlanServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Vxlan_ServiceDesc, srv) +} + +func _Vxlan_SaveConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).SaveConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_SaveConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).SaveConfig(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_ReloadConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).ReloadConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_ReloadConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).ReloadConfig(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_ListListeners_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).ListListeners(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_ListListeners_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).ListListeners(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_AddListener_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Listener) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).AddListener(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_AddListener_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).AddListener(ctx, req.(*Listener)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_RemoveListener_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListenerRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).RemoveListener(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_RemoveListener_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).RemoveListener(ctx, req.(*ListenerRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_SetListenerMaxMessageSize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListenerMaxMessageSizeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).SetListenerMaxMessageSize(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_SetListenerMaxMessageSize_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).SetListenerMaxMessageSize(ctx, req.(*ListenerMaxMessageSizeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_GetListenerMaxMessageSize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListenerRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).GetListenerMaxMessageSize(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_GetListenerMaxMessageSize_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).GetListenerMaxMessageSize(ctx, req.(*ListenerRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_ListInterfaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListenerRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).ListInterfaces(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_ListInterfaces_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).ListInterfaces(ctx, req.(*ListenerRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_AddInterface_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddInterfaceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).AddInterface(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_AddInterface_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).AddInterface(ctx, req.(*AddInterfaceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_RemoveInterface_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).RemoveInterface(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_RemoveInterface_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).RemoveInterface(ctx, req.(*InterfaceRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_SetInterfaceMTU_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceMTURequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).SetInterfaceMTU(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_SetInterfaceMTU_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).SetInterfaceMTU(ctx, req.(*InterfaceMTURequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_GetInterfaceMTU_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).GetInterfaceMTU(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_GetInterfaceMTU_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).GetInterfaceMTU(ctx, req.(*InterfaceRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_SetInterfaceMACAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceMACAddressRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).SetInterfaceMACAddress(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_SetInterfaceMACAddress_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).SetInterfaceMACAddress(ctx, req.(*InterfaceMACAddressRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_GetInterfaceMACAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).GetInterfaceMACAddress(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_GetInterfaceMACAddress_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).GetInterfaceMACAddress(ctx, req.(*InterfaceRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_SetInterfaceIPAddresses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceIPAddressesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).SetInterfaceIPAddresses(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_SetInterfaceIPAddresses_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).SetInterfaceIPAddresses(ctx, req.(*InterfaceIPAddressesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_GetInterfaceIPAddresses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).GetInterfaceIPAddresses(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_GetInterfaceIPAddresses_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).GetInterfaceIPAddresses(ctx, req.(*InterfaceRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_InterfaceAddMACEntry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceMacEntryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).InterfaceAddMACEntry(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_InterfaceAddMACEntry_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).InterfaceAddMACEntry(ctx, req.(*InterfaceMacEntryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_InterfaceRemoveMACEntry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRemoveMacEntryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).InterfaceRemoveMACEntry(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_InterfaceRemoveMACEntry_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).InterfaceRemoveMACEntry(ctx, req.(*InterfaceRemoveMacEntryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_InterfaceGetMACEntries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).InterfaceGetMACEntries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_InterfaceGetMACEntries_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).InterfaceGetMACEntries(ctx, req.(*InterfaceRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_InterfaceFlushMACTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).InterfaceFlushMACTable(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_InterfaceFlushMACTable_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).InterfaceFlushMACTable(ctx, req.(*InterfaceRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_InterfaceAddStaticARPEntry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceARPEntryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).InterfaceAddStaticARPEntry(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_InterfaceAddStaticARPEntry_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).InterfaceAddStaticARPEntry(ctx, req.(*InterfaceARPEntryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_InterfaceRemoveARPEntry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRemoveARPEntryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).InterfaceRemoveARPEntry(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_InterfaceRemoveARPEntry_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).InterfaceRemoveARPEntry(ctx, req.(*InterfaceRemoveARPEntryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_InterfaceGetARPEntries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).InterfaceGetARPEntries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_InterfaceGetARPEntries_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).InterfaceGetARPEntries(ctx, req.(*InterfaceRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +func _Vxlan_InterfaceFlushARPTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InterfaceRequestWithName) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VxlanServer).InterfaceFlushARPTable(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Vxlan_InterfaceFlushARPTable_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VxlanServer).InterfaceFlushARPTable(ctx, req.(*InterfaceRequestWithName)) + } + return interceptor(ctx, in, info, handler) +} + +// Vxlan_ServiceDesc is the grpc.ServiceDesc for Vxlan service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Vxlan_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "vxlan.vxlan", + HandlerType: (*VxlanServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "SaveConfig", + Handler: _Vxlan_SaveConfig_Handler, + }, + { + MethodName: "ReloadConfig", + Handler: _Vxlan_ReloadConfig_Handler, + }, + { + MethodName: "ListListeners", + Handler: _Vxlan_ListListeners_Handler, + }, + { + MethodName: "AddListener", + Handler: _Vxlan_AddListener_Handler, + }, + { + MethodName: "RemoveListener", + Handler: _Vxlan_RemoveListener_Handler, + }, + { + MethodName: "SetListenerMaxMessageSize", + Handler: _Vxlan_SetListenerMaxMessageSize_Handler, + }, + { + MethodName: "GetListenerMaxMessageSize", + Handler: _Vxlan_GetListenerMaxMessageSize_Handler, + }, + { + MethodName: "ListInterfaces", + Handler: _Vxlan_ListInterfaces_Handler, + }, + { + MethodName: "AddInterface", + Handler: _Vxlan_AddInterface_Handler, + }, + { + MethodName: "RemoveInterface", + Handler: _Vxlan_RemoveInterface_Handler, + }, + { + MethodName: "SetInterfaceMTU", + Handler: _Vxlan_SetInterfaceMTU_Handler, + }, + { + MethodName: "GetInterfaceMTU", + Handler: _Vxlan_GetInterfaceMTU_Handler, + }, + { + MethodName: "SetInterfaceMACAddress", + Handler: _Vxlan_SetInterfaceMACAddress_Handler, + }, + { + MethodName: "GetInterfaceMACAddress", + Handler: _Vxlan_GetInterfaceMACAddress_Handler, + }, + { + MethodName: "SetInterfaceIPAddresses", + Handler: _Vxlan_SetInterfaceIPAddresses_Handler, + }, + { + MethodName: "GetInterfaceIPAddresses", + Handler: _Vxlan_GetInterfaceIPAddresses_Handler, + }, + { + MethodName: "InterfaceAddMACEntry", + Handler: _Vxlan_InterfaceAddMACEntry_Handler, + }, + { + MethodName: "InterfaceRemoveMACEntry", + Handler: _Vxlan_InterfaceRemoveMACEntry_Handler, + }, + { + MethodName: "InterfaceGetMACEntries", + Handler: _Vxlan_InterfaceGetMACEntries_Handler, + }, + { + MethodName: "InterfaceFlushMACTable", + Handler: _Vxlan_InterfaceFlushMACTable_Handler, + }, + { + MethodName: "InterfaceAddStaticARPEntry", + Handler: _Vxlan_InterfaceAddStaticARPEntry_Handler, + }, + { + MethodName: "InterfaceRemoveARPEntry", + Handler: _Vxlan_InterfaceRemoveARPEntry_Handler, + }, + { + MethodName: "InterfaceGetARPEntries", + Handler: _Vxlan_InterfaceGetARPEntries_Handler, + }, + { + MethodName: "InterfaceFlushARPTable", + Handler: _Vxlan_InterfaceFlushARPTable_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "vxlan/vxlan.proto", +} diff --git a/wintun-source.md b/wintun-source.md new file mode 100644 index 0000000..a346351 --- /dev/null +++ b/wintun-source.md @@ -0,0 +1,7 @@ +# Wintun + +This driver was version [0.14.1](https://www.wintun.net/builds/wintun-0.14.1.zip) downloaded from [wintun.net](https://www.wintun.net/). The source code is provided under the GPL 2.0 and [is available via git](https://git.zx2c4.com/wintun): + +``` +git clone https://git.zx2c4.com/wintun +``` diff --git a/wintun/LICENSE.txt b/wintun/LICENSE.txt new file mode 100644 index 0000000..bc8d3f0 --- /dev/null +++ b/wintun/LICENSE.txt @@ -0,0 +1,84 @@ +Prebuilt Binaries License +------------------------- + +1. DEFINITIONS. "Software" means the precise contents of the "wintun.dll" + files that are included in the .zip file that contains this document as + downloaded from wintun.net/builds. + +2. LICENSE GRANT. WireGuard LLC grants to you a non-exclusive and + non-transferable right to use Software for lawful purposes under certain + obligations and limited rights as set forth in this agreement. + +3. RESTRICTIONS. Software is owned and copyrighted by WireGuard LLC. It is + licensed, not sold. Title to Software and all associated intellectual + property rights are retained by WireGuard. You must not: + a. reverse engineer, decompile, disassemble, extract from, or otherwise + modify the Software; + b. modify or create derivative work based upon Software in whole or in + parts, except insofar as only the API interfaces of the "wintun.h" file + distributed alongside the Software (the "Permitted API") are used; + c. remove any proprietary notices, labels, or copyrights from the Software; + d. resell, redistribute, lease, rent, transfer, sublicense, or otherwise + transfer rights of the Software without the prior written consent of + WireGuard LLC, except insofar as the Software is distributed alongside + other software that uses the Software only via the Permitted API; + e. use the name of WireGuard LLC, the WireGuard project, the Wintun + project, or the names of its contributors to endorse or promote products + derived from the Software without specific prior written consent. + +4. LIMITED WARRANTY. THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF + ANY KIND. WIREGUARD LLC HEREBY EXCLUDES AND DISCLAIMS ALL IMPLIED OR + STATUTORY WARRANTIES, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE, QUALITY, NON-INFRINGEMENT, TITLE, RESULTS, + EFFORTS, OR QUIET ENJOYMENT. THERE IS NO WARRANTY THAT THE PRODUCT WILL BE + ERROR-FREE OR WILL FUNCTION WITHOUT INTERRUPTION. YOU ASSUME THE ENTIRE + RISK FOR THE RESULTS OBTAINED USING THE PRODUCT. TO THE EXTENT THAT + WIREGUARD LLC MAY NOT DISCLAIM ANY WARRANTY AS A MATTER OF APPLICABLE LAW, + THE SCOPE AND DURATION OF SUCH WARRANTY WILL BE THE MINIMUM PERMITTED UNDER + SUCH LAW. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND + WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR + A PARTICULAR PURPOSE OR NON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE + EXTENT THAT THESE DISCLAIMERS ARE HELD TO BE LEGALLY INVALID. + +5. LIMITATION OF LIABILITY. To the extent not prohibited by law, in no event + WireGuard LLC or any third-party-developer will be liable for any lost + revenue, profit or data or for special, indirect, consequential, incidental + or punitive damages, however caused regardless of the theory of liability, + arising out of or related to the use of or inability to use Software, even + if WireGuard LLC has been advised of the possibility of such damages. + Solely you are responsible for determining the appropriateness of using + Software and accept full responsibility for all risks associated with its + exercise of rights under this agreement, including but not limited to the + risks and costs of program errors, compliance with applicable laws, damage + to or loss of data, programs or equipment, and unavailability or + interruption of operations. The foregoing limitations will apply even if + the above stated warranty fails of its essential purpose. You acknowledge, + that it is in the nature of software that software is complex and not + completely free of errors. In no event shall WireGuard LLC or any + third-party-developer be liable to you under any theory for any damages + suffered by you or any user of Software or for any special, incidental, + indirect, consequential or similar damages (including without limitation + damages for loss of business profits, business interruption, loss of + business information or any other pecuniary loss) arising out of the use or + inability to use Software, even if WireGuard LLC has been advised of the + possibility of such damages and regardless of the legal or quitable theory + (contract, tort, or otherwise) upon which the claim is based. + +6. TERMINATION. This agreement is affected until terminated. You may + terminate this agreement at any time. This agreement will terminate + immediately without notice from WireGuard LLC if you fail to comply with + the terms and conditions of this agreement. Upon termination, you must + delete Software and all copies of Software and cease all forms of + distribution of Software. + +7. SEVERABILITY. If any provision of this agreement is held to be + unenforceable, this agreement will remain in effect with the provision + omitted, unless omission would frustrate the intent of the parties, in + which case this agreement will immediately terminate. + +8. RESERVATION OF RIGHTS. All rights not expressly granted in this agreement + are reserved by WireGuard LLC. For example, WireGuard LLC reserves the + right at any time to cease development of Software, to alter distribution + details, features, specifications, capabilities, functions, licensing + terms, release dates, APIs, ABIs, general availability, or other + characteristics of the Software. diff --git a/wintun/README.md b/wintun/README.md new file mode 100644 index 0000000..16e6a68 --- /dev/null +++ b/wintun/README.md @@ -0,0 +1,339 @@ +# [Wintun Network Adapter](https://www.wintun.net/) +### TUN Device Driver for Windows + +This is a layer 3 TUN driver for Windows 7, 8, 8.1, and 10. Originally created for [WireGuard](https://www.wireguard.com/), it is intended to be useful to a wide variety of projects that require layer 3 tunneling devices with implementations primarily in userspace. + +## Installation + +Wintun is deployed as a platform-specific `wintun.dll` file. Install the `wintun.dll` file side-by-side with your application. Download the dll from [wintun.net](https://www.wintun.net/), alongside the header file for your application described below. + +## Usage + +Include the [`wintun.h` file](https://git.zx2c4.com/wintun/tree/api/wintun.h) in your project simply by copying it there and dynamically load the `wintun.dll` using [`LoadLibraryEx()`](https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa) and [`GetProcAddress()`](https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getprocaddress) to resolve each function, using the typedefs provided in the header file. The [`InitializeWintun` function in the example.c code](https://git.zx2c4.com/wintun/tree/example/example.c) provides this in a function that you can simply copy and paste. + +With the library setup, Wintun can then be used by first creating an adapter, configuring it, and then setting its status to "up". Adapters have names (e.g. "OfficeNet") and types (e.g. "Wintun"). + +```C +WINTUN_ADAPTER_HANDLE Adapter1 = WintunCreateAdapter(L"OfficeNet", L"Wintun", &SomeFixedGUID1); +WINTUN_ADAPTER_HANDLE Adapter2 = WintunCreateAdapter(L"HomeNet", L"Wintun", &SomeFixedGUID2); +WINTUN_ADAPTER_HANDLE Adapter3 = WintunCreateAdapter(L"Data Center", L"Wintun", &SomeFixedGUID3); +``` + +After creating an adapter, we can use it by starting a session: + +```C +WINTUN_SESSION_HANDLE Session = WintunStartSession(Adapter2, 0x400000); +``` + +Then, the `WintunAllocateSendPacket` and `WintunSendPacket` functions can be used for sending packets ([used by `SendPackets` in the example.c code](https://git.zx2c4.com/wintun/tree/example/example.c)): + +```C +BYTE *OutgoingPacket = WintunAllocateSendPacket(Session, PacketDataSize); +if (OutgoingPacket) +{ + memcpy(OutgoingPacket, PacketData, PacketDataSize); + WintunSendPacket(Session, OutgoingPacket); +} +else if (GetLastError() != ERROR_BUFFER_OVERFLOW) // Silently drop packets if the ring is full + Log(L"Packet write failed"); +``` + +And the `WintunReceivePacket` and `WintunReleaseReceivePacket` functions can be used for receiving packets ([used by `ReceivePackets` in the example.c code](https://git.zx2c4.com/wintun/tree/example/example.c)): + +```C +for (;;) +{ + DWORD IncomingPacketSize; + BYTE *IncomingPacket = WintunReceivePacket(Session, &IncomingPacketSize); + if (IncomingPacket) + { + DoSomethingWithPacket(IncomingPacket, IncomingPacketSize); + WintunReleaseReceivePacket(Session, IncomingPacket); + } + else if (GetLastError() == ERROR_NO_MORE_ITEMS) + WaitForSingleObject(WintunGetReadWaitEvent(Session), INFINITE); + else + { + Log(L"Packet read failed"); + break; + } +} +``` + +Some high performance use cases may want to spin on `WintunReceivePackets` for a number of cycles before falling back to waiting on the read-wait event. + +You are **highly encouraged** to read the [**example.c short example**](https://git.zx2c4.com/wintun/tree/example/example.c) to see how to put together a simple userspace network tunnel. + +The various functions and definitions are [documented in the reference below](#Reference). + +## Reference + +### Macro Definitions + +#### WINTUN\_MAX\_POOL + +`#define WINTUN_MAX_POOL 256` + +Maximum pool name length including zero terminator + +#### WINTUN\_MIN\_RING\_CAPACITY + +`#define WINTUN_MIN_RING_CAPACITY 0x20000 /* 128kiB */` + +Minimum ring capacity. + +#### WINTUN\_MAX\_RING\_CAPACITY + +`#define WINTUN_MAX_RING_CAPACITY 0x4000000 /* 64MiB */` + +Maximum ring capacity. + +#### WINTUN\_MAX\_IP\_PACKET\_SIZE + +`#define WINTUN_MAX_IP_PACKET_SIZE 0xFFFF` + +Maximum IP packet size + +### Typedefs + +#### WINTUN\_ADAPTER\_HANDLE + +`typedef void* WINTUN_ADAPTER_HANDLE` + +A handle representing Wintun adapter + +#### WINTUN\_ENUM\_CALLBACK + +`typedef BOOL(* WINTUN_ENUM_CALLBACK) (WINTUN_ADAPTER_HANDLE Adapter, LPARAM Param)` + +Called by WintunEnumAdapters for each adapter in the pool. + +**Parameters** + +- *Adapter*: Adapter handle, which will be freed when this function returns. +- *Param*: An application-defined value passed to the WintunEnumAdapters. + +**Returns** + +Non-zero to continue iterating adapters; zero to stop. + +#### WINTUN\_LOGGER\_CALLBACK + +`typedef void(* WINTUN_LOGGER_CALLBACK) (WINTUN_LOGGER_LEVEL Level, DWORD64 Timestamp, const WCHAR *Message)` + +Called by internal logger to report diagnostic messages + +**Parameters** + +- *Level*: Message level. +- *Timestamp*: Message timestamp in in 100ns intervals since 1601-01-01 UTC. +- *Message*: Message text. + +#### WINTUN\_SESSION\_HANDLE + +`typedef void* WINTUN_SESSION_HANDLE` + +A handle representing Wintun session + +### Enumeration Types + +#### WINTUN\_LOGGER\_LEVEL + +`enum WINTUN_LOGGER_LEVEL` + +Determines the level of logging, passed to WINTUN\_LOGGER\_CALLBACK. + +- *WINTUN\_LOG\_INFO*: Informational +- *WINTUN\_LOG\_WARN*: Warning +- *WINTUN\_LOG\_ERR*: Error + +Enumerator + +### Functions + +#### WintunCreateAdapter() + +`WINTUN_ADAPTER_HANDLE WintunCreateAdapter (const WCHAR * Name, const WCHAR * TunnelType, const GUID * RequestedGUID)` + +Creates a new Wintun adapter. + +**Parameters** + +- *Name*: The requested name of the adapter. Zero-terminated string of up to MAX\_ADAPTER\_NAME-1 characters. +- *Name*: Name of the adapter tunnel type. Zero-terminated string of up to MAX\_ADAPTER\_NAME-1 characters. +- *RequestedGUID*: The GUID of the created network adapter, which then influences NLA generation deterministically. If it is set to NULL, the GUID is chosen by the system at random, and hence a new NLA entry is created for each new adapter. It is called "requested" GUID because the API it uses is completely undocumented, and so there could be minor interesting complications with its usage. + +**Returns** + +If the function succeeds, the return value is the adapter handle. Must be released with WintunCloseAdapter. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + +#### WintunOpenAdapter() + +`WINTUN_ADAPTER_HANDLE WintunOpenAdapter (const WCHAR * Name)` + +Opens an existing Wintun adapter. + +**Parameters** + +- *Name*: The requested name of the adapter. Zero-terminated string of up to MAX\_ADAPTER\_NAME-1 characters. + +**Returns** + +If the function succeeds, the return value is adapter handle. Must be released with WintunCloseAdapter. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + +#### WintunCloseAdapter() + +`void WintunCloseAdapter (WINTUN_ADAPTER_HANDLE Adapter)` + +Releases Wintun adapter resources and, if adapter was created with WintunCreateAdapter, removes adapter. + +**Parameters** + +- *Adapter*: Adapter handle obtained with WintunCreateAdapter or WintunOpenAdapter. + +#### WintunDeleteDriver() + +`BOOL WintunDeleteDriver ()` + +Deletes the Wintun driver if there are no more adapters in use. + +**Returns** + +If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + +#### WintunGetAdapterLuid() + +`void WintunGetAdapterLuid (WINTUN_ADAPTER_HANDLE Adapter, NET_LUID * Luid)` + +Returns the LUID of the adapter. + +**Parameters** + +- *Adapter*: Adapter handle obtained with WintunOpenAdapter or WintunCreateAdapter +- *Luid*: Pointer to LUID to receive adapter LUID. + +#### WintunGetRunningDriverVersion() + +`DWORD WintunGetRunningDriverVersion (void )` + +Determines the version of the Wintun driver currently loaded. + +**Returns** + +If the function succeeds, the return value is the version number. If the function fails, the return value is zero. To get extended error information, call GetLastError. Possible errors include the following: ERROR\_FILE\_NOT\_FOUND Wintun not loaded + +#### WintunSetLogger() + +`void WintunSetLogger (WINTUN_LOGGER_CALLBACK NewLogger)` + +Sets logger callback function. + +**Parameters** + +- *NewLogger*: Pointer to callback function to use as a new global logger. NewLogger may be called from various threads concurrently. Should the logging require serialization, you must handle serialization in NewLogger. Set to NULL to disable. + +#### WintunStartSession() + +`WINTUN_SESSION_HANDLE WintunStartSession (WINTUN_ADAPTER_HANDLE Adapter, DWORD Capacity)` + +Starts Wintun session. + +**Parameters** + +- *Adapter*: Adapter handle obtained with WintunOpenAdapter or WintunCreateAdapter +- *Capacity*: Rings capacity. Must be between WINTUN\_MIN\_RING\_CAPACITY and WINTUN\_MAX\_RING\_CAPACITY (incl.) Must be a power of two. + +**Returns** + +Wintun session handle. Must be released with WintunEndSession. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + +#### WintunEndSession() + +`void WintunEndSession (WINTUN_SESSION_HANDLE Session)` + +Ends Wintun session. + +**Parameters** + +- *Session*: Wintun session handle obtained with WintunStartSession + +#### WintunGetReadWaitEvent() + +`HANDLE WintunGetReadWaitEvent (WINTUN_SESSION_HANDLE Session)` + +Gets Wintun session's read-wait event handle. + +**Parameters** + +- *Session*: Wintun session handle obtained with WintunStartSession + +**Returns** + +Pointer to receive event handle to wait for available data when reading. Should WintunReceivePackets return ERROR\_NO\_MORE\_ITEMS (after spinning on it for a while under heavy load), wait for this event to become signaled before retrying WintunReceivePackets. Do not call CloseHandle on this event - it is managed by the session. + +#### WintunReceivePacket() + +`BYTE* WintunReceivePacket (WINTUN_SESSION_HANDLE Session, DWORD * PacketSize)` + +Retrieves one or packet. After the packet content is consumed, call WintunReleaseReceivePacket with Packet returned from this function to release internal buffer. This function is thread-safe. + +**Parameters** + +- *Session*: Wintun session handle obtained with WintunStartSession +- *PacketSize*: Pointer to receive packet size. + +**Returns** + +Pointer to layer 3 IPv4 or IPv6 packet. Client may modify its content at will. If the function fails, the return value is NULL. To get extended error information, call GetLastError. Possible errors include the following: ERROR\_HANDLE\_EOF Wintun adapter is terminating; ERROR\_NO\_MORE\_ITEMS Wintun buffer is exhausted; ERROR\_INVALID\_DATA Wintun buffer is corrupt + +#### WintunReleaseReceivePacket() + +`void WintunReleaseReceivePacket (WINTUN_SESSION_HANDLE Session, const BYTE * Packet)` + +Releases internal buffer after the received packet has been processed by the client. This function is thread-safe. + +**Parameters** + +- *Session*: Wintun session handle obtained with WintunStartSession +- *Packet*: Packet obtained with WintunReceivePacket + +#### WintunAllocateSendPacket() + +`BYTE* WintunAllocateSendPacket (WINTUN_SESSION_HANDLE Session, DWORD PacketSize)` + +Allocates memory for a packet to send. After the memory is filled with packet data, call WintunSendPacket to send and release internal buffer. WintunAllocateSendPacket is thread-safe and the WintunAllocateSendPacket order of calls define the packet sending order. + +**Parameters** + +- *Session*: Wintun session handle obtained with WintunStartSession +- *PacketSize*: Exact packet size. Must be less or equal to WINTUN\_MAX\_IP\_PACKET\_SIZE. + +**Returns** + +Returns pointer to memory where to prepare layer 3 IPv4 or IPv6 packet for sending. If the function fails, the return value is NULL. To get extended error information, call GetLastError. Possible errors include the following: ERROR\_HANDLE\_EOF Wintun adapter is terminating; ERROR\_BUFFER\_OVERFLOW Wintun buffer is full; + +#### WintunSendPacket() + +`void WintunSendPacket (WINTUN_SESSION_HANDLE Session, const BYTE * Packet)` + +Sends the packet and releases internal buffer. WintunSendPacket is thread-safe, but the WintunAllocateSendPacket order of calls define the packet sending order. This means the packet is not guaranteed to be sent in the WintunSendPacket yet. + +**Parameters** + +- *Session*: Wintun session handle obtained with WintunStartSession +- *Packet*: Packet obtained with WintunAllocateSendPacket + +## Building + +**Do not distribute drivers or files named "Wintun", as they will most certainly clash with official deployments. Instead distribute [`wintun.dll` as downloaded from wintun.net](https://www.wintun.net).** + +General requirements: + +- [Visual Studio 2019](https://visualstudio.microsoft.com/downloads/) with Windows SDK +- [Windows Driver Kit](https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) + +`wintun.sln` may be opened in Visual Studio for development and building. Be sure to run `bcdedit /set testsigning on` and then reboot before to enable unsigned driver loading. The default run sequence (F5) in Visual Studio will build the example project and its dependencies. + +## License + +The entire contents of [the repository](https://git.zx2c4.com/wintun/), including all documentation and example code, is "Copyright © 2018-2021 WireGuard LLC. All Rights Reserved." Source code is licensed under the [GPLv2](COPYING). Prebuilt binaries from [wintun.net](https://www.wintun.net/) are released under a more permissive license suitable for more forms of software contained inside of the .zip files distributed there. diff --git a/wintun/bin/amd64/wintun.dll b/wintun/bin/amd64/wintun.dll new file mode 100644 index 0000000000000000000000000000000000000000..aee04e77bfbd6601adbcd5a46435f059e31cf6e4 GIT binary patch literal 427552 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

l6@4tc8N5VA~I#-O;aK8jwH}g?6 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 S2U$OlRhm)2P)^SQ)BgZ@5?ieR literal 0 HcmV?d00001 diff --git a/wintun/bin/arm/wintun.dll b/wintun/bin/arm/wintun.dll new file mode 100644 index 0000000000000000000000000000000000000000..0017794f4638f1a1b4e469619a9824accac6ccea GIT binary patch literal 364552 zcmeFa4Rlo1xj($mIWv>V_do)MFu)`eFcQE(P!UikljMXXU?Nb9qIDu@Pxz21*3#0} z2~uxRZw&-75Y)8V{zH&9Bia(tiXXk#w~BX$*ou7USZyIhdrwBlOulB`-?Pu0Ndnm3 z-nHJf-u13GYfa|tefEC#v!DI!=WBn=lG_`Y#27Q+6NxZ(2;cPQ;Q#;eKeNDC%9K}A z*vs)pvknQ1k7g}bYBt(xAK38S2ddZGR#o43--ZWmci&@s;CuJkYVNZYS1z-y->~|g zS;@%>IZ@E1$6tF^>Ns{(|9Ic~=>303`j+?q{C*1m_PuZB-ygki$G7*rKfj;MzdPR- z@SX5x;ZcTfsiX7gVSFEc|HS(V{QKDZBLALwl)j~o68?SoeJ{^nTC+-_HuWA>l`!^> z5XYo_YpeAw(qP4^}gl z^deqR-+ztopW%DNp98&_r4?fzj=_s6^dkY^3pLv4MN#g^tXi!g?<4xk((zWlq#WSY zpde#|RJj4~smSe@lshu(fsGHW!YfWY(2xc2x#N;@j#&@fvu*t*7 zm~%w(|I?43hLVn)3b7-u63JIvimq0P7V|4x+CL3hdHℑmD_<^yo7?Vp5Oyhd%*} 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�%=kFg*8R~rLze$&^!&l1)w&A&xQW2O3pL5OR6RN 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]-=0K9~}KskUtLYTa@i){1?H|ud5m| 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

&DF}ai|c=L{TtWV`5x&Jr|H{TTlWib?7-EXtDsA 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

Aw#mWS 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 q3n}#+{^hVY+(I7J+?#iw5RZy5 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 literal 0 HcmV?d00001 diff --git a/wintun/bin/arm64/wintun.dll b/wintun/bin/arm64/wintun.dll new file mode 100644 index 0000000000000000000000000000000000000000..dc4e4aeeb1400f75fa40bfd4d2503a029c03c52c GIT binary patch literal 222488 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%0D)mq_#ZFXgZHZPKCT z)|h;do-20VTcY%6{B`x`Q)lBm zKFv|i%Ae1(xyH|O@TdG2JIYz%JU99Uj(Vy5^{$&vk57%c(s$N#6@Iy+9x8ndYrhUp z{R^MAbH!;Wv*y^{zj=Hm41nv|56uv)U)%hJsqC=9;Bj-+K0+=$W!eb>Ro2; zGjpF#@2;wSXUbdCQ~FhB{n1$WLkja(r$_y3j-x&*|6DwUsf^kOaq_43X`Jm+?OQtU z^-=pzuKuLYcB_oiYwKNX?hiBn>P{twQ2T7Dj{2+i0rl>++D~V{pyj3ZIh^fPVZGa~ z_S++&vDW>z+CN+5keAx;%67C5wXfvlU+?>97vf0t9$J2Ce=OV4kE?w}y^GHMbnZLq z-F4oF$Nf2HdsO>_dKaDk+;`Hc5wjoUuQF<1%hg}CH>W>wuA}~`{XhOHqxOaMX#;is zz_tFUeIk7-f&NV2H9YA%`vbL)=j2E2GwV|fy!VgweSt$>3hUDi2F5$J6Qp|#jdhFH zShq;EPpwZysB;nODOi<1wa@3|NA2S{+mFJ|{3y&{9iRK3`gDcfSLT!3+F$J-XbRNl zb4=0{^!|veKle*q{V7q+k={>mV(z2!sb!s>Za=(DfM*z#kJ{fjdpuO`MUcCv@XFnF z{8amSI(6ok^;L6A%>7gYS%1_y0DW48 z{;V(hw2OM)HxhM3_aEw~T_qS?4SG%hA zHdC#!dG%J)PA>kJX%7x~(zHK{dB(KsPdsPZxwpSy+J60BHtp*^s-<0?bjPbE?mzW4 z(;j^0b<Ty`M|VaI$+vH-Ax~w{vVC{h_=!6t!bAJ+j7Xnn-`b%(j;;-?Jck zlo*`Q*{?oaigM9*(QKDL8s?%+g(RP9{We9`@W{gDTUam-=T{Jo0s_(8-QYn*HF~ z+va9R|5fwklDbi;(dqA6{0@GQ5k0Qwfu~>mCO100kY> z)1n_<(&f+CyCz28Id_`pN1J}(9^AQe9}eHk z;5QW~1sH1@c8{lF2X-1xrx1_E?r*%@+pX&*(_`HK-Ra>yeP;gBcbqYk&fJ?iY~Y}j ziMy`Ly7#k$p*326FxQ-O@qQE4v%81$6~^7e8TJ#gufOsUyJoygocDxs>~qp_$3g}r zQG!r5j1vp-%Nv0>X7C10-UGG}qkJmHj3P+MhFfMzjlTHu?n&N)!#NRWVAOUX0RT2x{@*Ox;_;TUIiFwRVs9c&361@9ZJPV(?-^73 zYtH7#A=kqkNlC?K=9nvzLUS&p??fSAOj{XuIb1kB-jTBGqSN9!n;dd|$}~OESNzzJ zQ)&S?2jxvRHjMRLzosKK+RTyj+@Y}VMsER1fYRb>pEnAfO*0*oc+ym*z)+Ns4RN@3 z(NfXWJ@d;|3hRhFzoh0`j;{R9L=7Bo%sZ1I#BJZi0o=kh!k|DLEsfaXHTz08#9#nN++S5feDmkP=8oXOC4S8cdRQ;;6eyVYu64P@6ooWmu z=p6GVA!ae;?;ORayR@8%pw4zT4KZ}9@x-t0AO3s1o?9O7^ACbR`-ES$2CW~Tw}o} z??q&vt}V<{scY$a=I`wCKR>;*OWiZw=Jno{=K1+i@+!fM z?Cdcx46baqYKE1I5NwU4?Oa7Bn=4NCxT>7kHe6Sv$u4VpPx5uvH&>orYuWkvch1k7 z$7i{@)*Q9|(KB5|(-S`h$YBBUpyqIFL+&FN`$E=8&*h-&pL;Cle8M@CaP4oWn{(p4 zv-(WNR?|FeWLkW<~uHBVRXfSo(PoVn$pOgT?wzNpovi>LLf&V!=nnXe1Uk8$g! z?@a7vx(m8|D(svDiF4;P3g=e`^i{MQ2>{{s>e*(%+ad$DPc}~xDUUB}^ zM2N6F)l=tuNVPqitVlTbT;QC1DKvQl@ueSU z@k*P=UbPU?(&f1jp*jDit8>LV6|QBVn1QuD=k7`H=iaP}H6CHLwyC*fbsjv)ll7p) zoW&M`I&;T4rjrtR4g;s`5#9TKtzTT0l~-JnH?XKo8pJ$Ee=NR}plg_JYIqYIx|zPv z6Kms%AJ_G_lM7X{ii?Y1f6q0g=$sYn89mqPN&~0m?V4jfXP|7kLS~Q4*&J&G$4Jhe zSXRz?@%i%8oXYuAW}To0fI8Jo{O8(&Gb5HkD!!}>+#^@>>}3c?S*Wp;T&Yz&>xWZE z%u^(sY0)I%pVH0ge4n2mw&)VnR{qj7FE7=SoYHMRGBvM7&X%cGFf3(q-`sf8_mF$1 zKJmi*vI@?I#Qs-u7;nm&yiu;2Li4)eDv{>$(E1N@tXmS>6E)^sNpglvEemTQwZ^PP z&F3pDQO>kjX9l7UkP1z6cka5YhSuDjan(uk38>#(4N(i^EFaf=m}K3`Q}Is;JL5Jl zMHLJ8e_v2eDr78j%9$41kJe0*OJ_T7PG658iW7#S+?@U2+4a{oPfl50xE^_q*B5U; zP}7;gD=cq zbKSA0@Or-D40+-4Sj*@9`EhE-E;c`Gf3ABVY8Eon>@V1^wVqn1?Z9s^UU#%{U2vZtgqC`s5!V=adJ*Y2Q{A1=18XJg3g_0j)qRIJ(ag}{Yhza#>+Xab9cfu$DZQ5m)F@8&R$n| zqT`&&otuwy#Y@ASPtB;#PM!RpJD%>#&YkAD;y3TdC`Gjkrt9Ll;w>|4n3~7C$6~KV z4G(7|q^3f-#!zDq(_kIaJ`9&9BV&oVa#5{V?SXK1*}MjOl85fcRG*~ZpVE9b#5~c= zLVDy;n{(0Q9Nf8T;Xn2&&gUEYV!R%T{ze%Y+nH0t<~*n2DWA>jfzktUJa%fnJ@eT-9ywu~Q|rU# zvCp4h=lFc~{N6c&aIfCE>#8Yw$`3iweXg1TYx$|ZopFDv%1)(C{ScqM`Yzea_-?$? z7HL1~cG}~caD|tVFrm3$OS(gulLEgK@q^O^jm0&@7B8b}u9s1c@3{=a*Sh%cclmF| z0S#?%T+=*!WQPOkx*FGX58dr$*pS~Qw=k~Z89NGLv`NJOv(knqX=&Q7>65;z(P8Ko z2A(V7kF#N}L7M$%_-YsbI+yrc1ioB+VQ@v*O)9r_2irnZ9fP9mf|;AF`Id zv6s!8U6fH+G;eZhQGT8+W}t0+eqKi2!i=2sd5MMji}9kNqIpW;FfS=1CnL2eV_s@u z?ug;yIItjnflhQSEt;?>y2seR1H5sS1`keKh>1^}#<5AW`XtB3z{^N%?sg^J zlAF23o8eO62DXfWX59E#hAU_u&Wu~y%q`K3Tiz^gVlv~dZyqk00XH{yGwD?}bDL$- zt7`6MhT93ZU<>$Lv@k0j&9wG4i&1+!FkTK`oQlJ>sH^`EdtU-jRrT$?&%GD8ASen7 zj$9l874HR9D9y{Hpoj=4Y8vBJP$n4^asnJeZ4gZ}v&5kUv$Dj3%0f*;Z9vm9n?SH| zsK_a5Q-uvGFeeZwu@H=~2d+oK?UVAua?~_d7qPxF1p`bSV3CT?I zd-BOA6XGBywr{3Fl3PYreE(oyG0*Zgelx^8D^2|(rFd0s{G@o*@T=^Ed~zgS)+H`Q^Z`p*5Zt`NgC|EAiqVk2gZ}%U0l1 zfGvI_$uDf7g4L6sLE^(JSAiZBZb@gvJZHj>Y!>$u^Gt`IiEfE`?pv&2n=D%5iFvYh z3Vas;eiC`HZHEypazo_Q=EVFYw`fem;MWAja*yNRHs7aUjxdgBBVxU=$~NT{^_o>H z*g7glMrKBQf33LHe%&dQcSnn#SQcdc4}Z2yuQq3TR-0d6x0bE5C0qU!uG%Wa^7^{E zI>$E!b`A!jH!F6l&9AFFrK&1$tIwAJ;a04;JNYZ?^OY38JJa;2U5=YNxBBI7^>r&* zn8usvowhn&c-*{dMU`T$Om{Qru4h`u+Eb$cQ?h?K{5K(8$ls)kW?I`?qPDVLN@-ZdG=s2eMztCM0KM-b#?3U3A!<$8HH;(u4jn;a#F>C^%Gd0try(m$S=RT zpg-dK!_O6NN+bJ0*VSfl*Vi+KGfUL9%j>ZM9%dUzaX782RnoX-2sT-7#YKG${T!Dt zrokn<)gmp%&~)ltK*LI;A>~apR7jJI_)p_H$7#gielM;j?k>lDrAfH#mcuQO2hpKC zLRq?P?aC^#Y($^9QY~fddtCPK2qJbud>VIAd@q(x<*Sq9=D_HBt%My!T*3~B3lk>B z?TLE_QBL)BgK*zhyzg7zh3Rc=#Cxe;2Oz9F4|8W>Y8Sd+*|%QKqaGXSn{X{g9)x~~ z??ZVYIhDnXP>F{QMe=@s^9v$A>d~qXwp5| ztp?bHY2ZIxHF%_7N9&iy-X$VImorg%PwJlIs0>YYjJoOgF zCczGRBH&?ma1(f1i*&WmwDN@Z?ClJFIbnT#&2e?rsw$PAMSU9wW9UBBwfT4JQGd2h zVmbTXg(&NW!>u)OM?<#MKg<0OMIybS{^u;>eqs_gT?lj360cOb)yu0DPu;DT<30x2 z+Kc7ATR#-(I*a!xI|z>B`mq*e=_dM%_DbZ(mD=-iiMMqdVO!3juf4(;vTt_8Cj)9x zSridFJw)49yIOKn+%UwYc+;rUGWi8umeN-P=@*E!qWxPb@guj>A(x;lxTYPz7#VTV zCe-xo9%8HOY{Hiu|4ajP6xR^Mr(cWhKzuio_{3W=c$JK`$}vP^8>5=4FTGGZQyi>MKrF^yV)%%CG`$!^`P z--@xsK$88+mNq2vBkObWUB-IdV{8{M+g{vPnz*e&OAY!Yn{E%_Gv+qz9WI&A5h!~f zsjekUfOMmw7b8vd0)3^eo9LG6-xF?(#iV`;@gF3QQ3`>D;F9y{`T$<+l?bPcmjyPi zMaN{hCL_GqB#!d~;yjIf&Y0xYkK$0@1KwmhUe*H3!*zz|g)*q27bwHsdbC{)>HzmG zZ5Ju)uz@ZHby#(n=+q$2dys4UIQEnm*L^v!&zuETkBhx4=?&R7b6zJ~LFZY@>#4SR z&1Nx=V}h)Azm zEX%86IE|&GG&CMX|7a`rk2D@ZLRn{-kHCU(x$v?i5TE+WK{B5ht72T%Hm@+Tj@rsU z-9uo>Frac>FM}K&CpoNaD~AWkb6=3aKEoBpdGLII4(tsU*r@RW%i(cGQ=GMJdB{V! zc7nim@i@IvW=FB!CB2sGFLJWL5^+`Yc$w|Sl(JlDPB5gM4NX&pX=bWWFD7#c)A)Cp zzB8s!%n8?MT-R|m;S!{wQe8UaGM;#9?e8dg-N*;Xv@8Q{EE8iF&ZibSf$<5_ihZD% zj>@C}{kz!$^Ip)ZlR>zTF>za6Z7VOs z9#C)JuMpU@l>*beC$*KDzmat$OV>ay@|dNie3Y{MIsC;$GlbL8wwrrUtAjN?Uj zJV%VX)fnGHU;5UgTNJ}c=GCv!U##0;U8Vhxe5&Bz_<%54d!!%L7a_(ROv7oByXD8% z3Qgm!Gl@sKLhDVmmJx>aimFts>1Ma`LgCd2pN8;t2v?_J{jyzn4Z>q6AB58yPkFoW zMuaCKyaeGIq;F^!&W;K!9pQzCKqDP_ENGj*7U4MvuR^#U;g0RX^$5>Hcrn5q5$@eC zJRRYM2v0DjlV+l%wr z!1=nt!)J5%c#bnU{{y+ZBga+T{|ry}A$Nbz@fOEw9^WNXDn}5<3mg}4T+gwLqs;#n zp8i9Qvi~0L&f{oqqGuGRKhNK`9lhDyoyEgtdI9aykLTf!$mM89Cz|smiViR= z2u({cL`P)BW@TrxH^_ftY`T9&WLi{Gs;5U_Mg}Z2`A$kVq_#w#V8~^q$rDo3 z7N$l}zSS&nes*lKcz>5g7_zd{1Cl^LDCwRC-s5KZlsubadIg_&u z8M#wqld}zhIq<_0q?`gAh_r%JGqYlolfz;& zVpB4s*aevvzwD&sgjSN0#93>JNsO#cj_nT;rsND6>{?5h$b}>hxlkhaePmuxE-AQG zO3>Yqh~NOK1gSch!+o(u)>EMo2~q600I7;~OI7oioVO^K7PVoT`)J%>KYBS%OC7dy zHB=7cn!wc&@-}BE#Mq={!&E$gLsOxGO3iQ>3yaN4^iNBPOG>3y*?}QSt7gJyv>0P- zQfdMb2#rlav;--qDXB?P{Y(m+2$E5(ugn3-tfj&O3|X;B$x+PW0bE3}?#6Nb$4EgKR4?*2eQw`Bw-( z+aokfxc^7bS?Tu?$I~3^IbP$)mPqleIXZH5;rJNG5RNe%(>dmFEadn+$6}7}ay-HD z9LLKX6-%Z3dvWyQ7{W1;;|h+?bKJ%8LyqS;UgOwtnMBu(qc_J8j!$r$%kfE$YdCJ< z_zuTPj;A?Z;5cH1luv(-9XYP2`oeD)$1;w`IDXBso?{b7t9(w6<0Bj+InL#{nBy9b zJ2<|{@k5R$IG*8njiYselus{?T8@u#4Ck20aVf`VId0`x!tq0npK<(=V*|$<9NBUy z-!2^cb9{tj7{|FBS8&|K@imU+98Ylkk>hV1Z*vqY0e{AG`Fe14_sJp zC)oyimnbSNV_qnyCzz~p>fdNNa28PG%J&at*>`J`o1@Ma5$3z(2*f}(QI>iEMw&Rb9M-obm z`Gz<(VXHZZVHg!bs5ErROvf}TibW~OwBGOEQyF52U0}G6Qk5b&6~tqcF^y^;7{hb% zOUq78K*h99eWLL0j3lFp*?2(;oPLbbiEmkn9t_XB#rkW{2zoBxgaizBBh&7u%GiD` zkM^9r!~GwWMi2sX(xE1SsSA=a(o$2PR?;XMBm4@nR>BQZz0Br3o7O;^ilfiD?Ph$p*;=K*uyhlS~FwCO zHlvj*DuHh%H9WB_pPNWLf+m14SqaQvj87wp>~s=N6suQ4l2cMK{7MMSVW*G^?Gq!f zd4`0s$=R8SVp`@Yj7`qubvc~w!MHdFW+TW2vmv>>$R+B;36uQWX+QG$k#Y@5OPiOS zE>B`$7&0&~{~Q(~9&0pVX&42f+%*(4EIu-gN=9XX-(M^+C#l8O7N{Z(87WDrup6@Z zW!KtETb#50-s(%#q{$i!kYtj;O*1<|u|zrMrW;siu|4X zsgjaJu}g~JOvoZB!Ji5NtH&k~Jzsx36z@PeVHQXC)5+IAj4FZ65%1GdP~qq^QVqT= zv7HajHB(N^PR>g5%gr*-VpW2{KQT6geXo*lBhy;K*#S!ZAoIceMV)+5kaOD}3)wm(aAdiEKbxk^784bpp8^n8eXIqI17C3XC*M5?2w!bQ2{=FO$BUqHN~3+!R{(I3KywUYP{U`i`pQ7DQ z$$xUWslMo!y;=5=klt;1(64%mbnbYLN89m=`xxJ;aj^-}26)C_iwU0yj zJSbikCLYmAm_>okzkdHiC4gS6G8*p)0Y3u<0Y}9uSOPEzm<|jBegaGfYVh(`6EKfH zXc`CXf;j@P251YU&1QM=*dGVfCcwWd!s%VDZU_Quf&GDDKrdi1$41~Nisyj04S;%% zc|h`C2MhtyyJV3-4I02qU^*}vSPaYp>U&^sC6M-5(muU(;P=3N8t@HtfuXmZh5R|@ z05x#e0B5l{LEjgA!#%A($_*?Y$e1&$VU@r{xapZ)A^E#u^%;nd#;|f=7@pl_3l|lR zI_xKaI|k47f?2FU&-WVPrssLqPvBjuG1#jLEc8P;f#>k7Z>Zvu(l!|T3E*xV5BUM< znc!9+eSp3kSOfeFm^cm30tu%xb^{oLF2WY|<}y>lMxYDaVbPEqa9S+n1uTvO|3Gy- z-tDGv%;JAg%u&*F$3rMLJ!{+ye|p|n3O7BU+zU57dprgAXIK+VVKEj@r$}g+s>mSky-&@C^8){Y#E9&^O>>VAE0xuNPvLk^Jj~a$t9s$EroFVGZ03 zFZKfz*d?E_;h+}-Jcsnvz|nBq7BIZwQp3D~p>@d1>^_RuVl;zdXNJQ1fByLz@L7Vg!FFac14nE-D=7wR;U&c`LB`aYB`1hiJu%` zci=jpHQHg=TId(@sRS}=mrpaCoDnB90oTFp_zdyxWHUo*DbD}$55mbctK!rqQ*m^vhM!bC+pr62)=P~|3ynVn*xNWf) zg7|acs0R)}cp^vIE3pLi>b;5NQY+*EgHgXhFJM&(_Cxz3>;vqF?H1CzOUfEx2;7=t zv~yt24zx#%PFdzd|L;sfOKx+xu&Vcjk@=4ZuLfVZr-bgk$~G@jSI3KcNX| zDd45j?-~0L@y`LVo~tPN0Z$=>v8v5KVGJl7Q99O2pP%4zUBW`3J^a0IU~dnw5I9)~ zR-U^F`v!O3EvmOlRtacmBv)Ky9?vVcKg)m?l{Aqtp3i6?GzX31(mH_)B-sWb! zFD>X5wgQ=0Um*uL8u7}3I^@^D(NTf-fe}9ucm~)Ad>R;}6xcpsIq($du2Tspudh%A zyvg*6N;3hc+xQ9I<^sN=<0q^GdLw=zHsl6TdbPlQh2D5u;(cYfZLI`RkJEv^ptDbO z`wHp~l-^f}0h0X6x!V@|VVaO`ACSu10Hkt+*$C(-jtEV_kU40VodxLOF-2Gx>;r+j z#9qK!_@|1PZUS=^f|P|00_z3;X^sNZ6L!a*D#cMnNl$^LKyMv;lUyoU4A51mQmpGE zz)pN3#5f7CJLAj~H3IZCSh>$xU9AMsc}l0%@P7&sApHUcZaUv+Ek?X@;5uN= zN~*_7L9+^Sg}Y`A+QB^7t*0ei_l&>-;C93wlxl=0u0wf%4I4;qzC!x*RFA$w2`~la zb=*kxbx0`Q0)CJ#9s5JlfwnJG{zrrwU^eP$+ACD<07d#X0rple>?;=7AK!k4YUuW z!}q$tU#vj;SbWgG(>|GJ(8JLlu*Dc}(;jkbj6-N&I3ex#P6yIH?qVSA(f$lb`>3@T zC(xect3cZ8yBGa1?eQ%K(w<^UM|+7A;HJG`YS>rW*Le>82<>US0XOZ@BY)aISBQ2> zd(Q}I{}&Ls~DWN|#WZ zCSk&S35!!De4b+=$Hg2~9A$ZhrAYAuI94W0?kw(3r6L;se^Z$(VS;nzH z=ks~aXCX&#UXI1wozC$??!TAwdxpDfI9}yg!s)AcI$Ms@IJ$83;;82+^Y6&hZ{;Za zujB4w9>20(_$XeUCeDYPt{0CV(9XZUUHTzByo}QcX~&mL@9$BGcS11^!xYpO7zT6% zCISI1KPB$at>opw{|Vq`U>0y+yLj|8NkH7H2l!J9t9gLGr3&L+gth$%jQrI^tj$mI z$B?4kPx5zph(Ee&M(4};3~EhQ-2_`;(dyRVUD>>}R(ElllEqNLY6q zV0^hI61_wyRxbUSFYep>QjD?p`O^0fBRC~(!Jy&hmTs$pR{d!sSSX4M1`UK)Uxgs( zI%#dpEn`*%2?nJ~A(%03fw`5r@3mZGm8}(yZS0+()~HciG)< ze87OYW2TgSvHs%8v&UaLYO#Cm;^3b3@9XkwwYIH^6-u2Vk7>P3d<5Mbf>R4kuJtew@8 zQX!~xle81HjwU{xv{p)mS#hyy2l1wBC&7PQMs5B}D*H9J_fFdqxAoZNtregAbbDv_ zu#25g_=10e!sq{`(j05}VngYqqZ7hxD+cRV?b|;(uJ@A($sc}^Yu{yL%-6?0*5!ZO zp3{Q=XVpYiHk&GVibPc`SEZv^`OmkBmcLS)U(lxqnjw8zaY0!qHaF%TRMUy7r{od?_=;++<* z5pYp#N<9MUy@;)>HeAitCiJmoe&C7D(4^BrTR9mYhcv`P9R7KN)=-fL59BZuw7lRq z0(Y_S^+AlGi0L85^9B-so*+3J7jhlZCRZ2jz&>4IrRf_6@^=(a5wfTwaX=>>#*1{1 zv`IHa>(-|mL`|n!(wAJMQ$R%;4@f(zOm=k@* z7mu#TJzQh}dFLW@fU(biR@XsmX|9~2GPhGqiO|_;JCj3gXB8EjnTVImveHs@w&)|^ zX<=s(Zb(Q;OHI)A(e@%AE4!`}lj1YdGSg;fY5dbN($g};{f;_s$Q zWMWcAf(HBMvT~6oC7q61L~37+hgRpI?St+Ks2lEq%hPj)*jssMJ-AbwU-VzX@S|EE ziD8fX84ilgNLUz~VGy}R`Qnn2v3FAwmK~Rzl$mJAKyTUCRIccnl?6g4^rV87qCgN> z$tRm;Jf^gNZDMZ6-rb9v?ALud_qXn=S=gzO-*hePI`HneSBIT>uk)?i`hCA_Q*9nD z96EV%@v0>wkS396i2l z(v+^GoA%XTRw=apC2qr#h!jKKcCCuEov?cFMY^W-6BbvS`WdXJ0zF z;nBI?8;9?zo8nZmY}89T-0f;#zI`V4m-TLzbGv=9;pDzvWf$vyJhA7;1C0g;ht*p) z_WnAe`=LJN=`UI|)kS4r?Va0oiTw{&amy|*xR7OHkx#XQA?V%%R8Z;`CAU%zGPyT1S7ZEQ zW@e#OYI{@Uj;d}ddu9>BN+Pz*-O}4;<}1RdrBlafGqqt9+*uW@9k(k`>#uXw4x(D@ zV5e!VMZCf;DP<;V3_D5FG~r3{X*w8AifU$OaFIav(5`9g>P_SALVv=eFaPyA~>m1wDYt{#dC@ctKt*0veF+JHf-U-h3+YG zYjBTGOBt3vFDWfOb69*va%(df;GyLW0e50k0E&$P*wP&6-WPwUDYzrOHa}k$3Wjvq zDEWNZtyQct{6h{-Mjyat#;!(_4r}>7kIv{XB3bfo>OdH66R=mcWvjOAy4{` z+y92^^~gcTqdGp-dC7qx$Ac0Etk0^r@XIu#BZ=i`$3wTkVq=a6W1E!zo8n_u`}V#GYOTGDByoolQ5ho_~%xT5}(W@Fb! zmOU!zCJv_amdG-vE8{( z`pNu*F1=p8H|nK?`lDBViXHG_<8O%{pW1zLshc7{G-0N7#H!q=?jvL0+ibKh4(&Vr zC1cN_b4CpsHFe$Wx_iqEOFFGOIDA~gn$K>WfA-Sc(ARfQxw>O@pR=BU5hsnWEIj!6 z5TjZ7vMix@!yU(3|5G-X_Iy7w?ciVKoqp{-Q5YL)wfAm8!_}$F?Vf!^_|-lk>vF<7 zvu)o^Ou@R$lCU86(f+^H^xt^w^JhQ3S6;vI%O95B+4#hE;dB4DExy^M{q3byJ={_c zb(p>*D{ZZ8Z2e(u$6$~xPY}BbDvS!4iA8;&dF$Siz+R!U#;`*gGGaQb?Lh6nlZwc! z(spVw24-3%Y(g8udG^-Slg~Bmm>HLNYV`B#9{=WxEsmdPr&0Zq1q4(wt4pf%lO#e zS;k@UvRQlx?W}g~R#^Z6&R8?&{AXwH*$nhu__5X4oU;8tc1aq%u-{?BFd_Q1@<#0Y zVK2Ks?UQjm`LVfg_gRo~^}Xu_-+%VO(WG>j%-IfOBCq@=bPM`q?6*Dh-pqgGnNGPW ziThr;JamlDS0}ue9(-c4I<@=v#}41{_Dqbu5I$~sEfc1me*ffC1!g)c-?gE?EQ^l* zHTo-`p@CO+*nNDj&*9C!^JBY3S6QVGSUf#R*S~)LFIFF@9RA#v(dYQ-4|;qwTJe{q z^*jD$(|f!av0;;Qbj{cA4HWz~j@Ucs-bXi9E=(Nlc<{zYn+yAPUKQT$df-*%3%2P` z?M(NdKkB>VtCSAbH!~kUwxo7u!mr;P4f^I+j|->veD&q-TT!90#)VhrTr1rFBRj8r zu6m8v$j5r0iz`3<_VwCfYcn3r-?TXG?$y}~GGco6zgE0D#(_=(7lPEdMxh7M#Hnw!7uIP-D$};7H1lIy5_T7;TioW;l&$v&3Lq zRUohpH@Bz<<_yVIJokvZlR;lHtM4CCp@+xked+0)uY1vD$l>+#>nl>0zJ2)R#)*fA z>7D1_{BG5g?n`5`&e|k@^Q5;>aauKMnE91?*`7G@qzicYFE7K7YB_{hU=fu%F`9N!y$4;|i{OrM|3u`}s*7wucRIy%F`% z(3NiCbI(M7U^C>_@zXCT!k$Tbc5=6vcdj`6)$^4V&pUbAUiooqrmrx;p~CIG67|&) z)BREw>lYkeF?CW<{Eg>km%cc0>Y`tAUwomm!d)GB^ho7PSzo;Cwo+z$b^6wt}j-KnQ|t1JIG^q3xXXis@EL;Q=dYeUE;ABQGu}BQYzpvhd2D zl{?iM-xdDV`nO&m@z;+5Ra+J2u|aQcdu5cP9fq~?0;Enm!X0aoGqkEag>a)d|J<(p zv)cUA|0ScNq2kN~lY{=Pqod#qLozmgX-p;wAxSCNv6(^SbaUy2s zMhp*YTW9COV_%$D7=H9mufa4<6dp5GY?_@f{x1;(FPYM=_X9Z&lcwV0(2%-X-EiGV znjz895N^!PCFlQ_^#oo2`?>swk)KqJ`gZBoA$6geprQTWTN!?Q+3)jubzEBh;Vo6~ zV}DkUxKk}SyyV*Z(x&a#PZfRp_|HE(^jdYmd&!qJWkUxg>5gu;jvD@!=WhdVe6C2Z zAKbr_@sZabFK>R{$8YHSJFflQP&0o0Yra?JjZOJx^R2h8S$5y_+YjbN@q0Gww$5K4 z;vN6eOG>kab~BcSe1CNL@#}fp5-R<@kKNKQ`zp4N-H5?We|+`B+ne`hbiJJwJ>l`~ z&&@h>b$ix;i`Pzst`SC_@8sz;YxB9YUoC!icwKmP#P73QF0A`CKk(}im!-9+D*2c-a$@axfW8ZkTcX z<)#m+NDO3KVV?wkuv@$3x z9}|uos@45xjR_w@yZtoSjz+ZuRMuK6dDy8`w`<1Y-1xQq#?DJ-Y+JRyqU&?J9WS0c zoE=r#f99KuS@738UbQsTKC%k0sy6<*H8a4y`}u+1DPM*~{BU*NY~^8lt^J>S7QYrf z-F4s_C->H!5pMWCmw76^uf-w#8+ilI&4>xvJ8^H9x^cIUf3dH5U_+V3fReDmO?F4# z3pqABU-#jhQL{JdXTNm%_=4+>AFO#d&C1y4&q#M=_$xyKqWYg1vRL!Mx$G6s#O*9P z(cAp+(BEsaUpun>w*$M6`kabS+@+d7c+jbS6P7$vQF3|r2gN6ws$G5`eYw-PeCriE zHqPyN@mqtlw_w)6@0_3MHzaP;`cX6EW4a%k@ABiul6~_P7hawA zGagpWhXI@}&y6kf-Nd=EqMfk*+2+Pt?MPaV^c*oMtO)D|Sv%bbjR9Uv3Clf9R9fW}S+)OLaNc!?-H%gP&sWjy*J} zcmFwEGI}_#d22$#>ae)CXWd)qG`cY=d+)(DeiQYRPj%XA{@9#lH)mHWHw7&Hy?VmE z)QekAyj^nbNjEE9Jq{O*U9 z#{*_P(QT_>HmUDK*-}CEgbRN=5kC7M)AX;2aO)&HOPgOzc1}Z!fB74=`Rld$&$Y}M z+?80K)Q*ca~ zg1*{CkH~PYJ-+otkILflZe28%BtJypz zf4*|`%R9F_r|rM;+GjU)AAMGi%ZeLvHod8Y9RhvA$1Po0qUyPs{m? z_0}91a53TPpEo{U8b5tNrzhQgq899!zsGz{r`6rwkKNt*fe_v zZ>)WEzU5D|vNrcs$DZF8)+g=YAGPeKUvw6`HazmDVO&l_Q%TV4fBu-UGlXs`*YPU$AcOE}qWi#c)C!flERQ>bjp_iYj@pSLv zdb4s^AQHM_bsI9#B+0PU2*nB)|(xsRCboU{cgsP&&hB42ypQ_*^CQ0dD*Cw}vkHT|Y%fq?x}%`k3yc8U{{Qd%Vn;tK zl+nW6Y;Z@VqKC38D-P+}aO0SE!_%(A-yRv^`qqZe)}1NNU#`v1+qLw+x#KcZCc?E_R~GD zzr8|#d$KPq3oQJnVs$sf;N(pP`8sri$hj}7m>zCEXFC9Odo3#H>O#SL}UoM@JRrlgt&FM4I){Ya-R`-14`Zw2x3|)RQ%B4b+ zqgcK7m)A2&dynWIHC4Si^y**3?S|IB+w+}4Hu*78)<5Uz3Y0dOOj?S|P#gYxYgAlw zdeB_fbj_(i7_aTovJ`hUVAoS-WzqNzIpTY^zhLy zT4jg6zb}2MO81hTHh=R!K~s3J;IOLpUGP!+bzQdix{@{Pwfqe>wzkewV>+yGdpC66 zn^%{f{5{`PA+b<^RT|bMsk3lumcr@d0Sl|YUArJ6`>lJ2Uplnyz0n`^u-m9DfBUN& z8;8f4muqH5A2@yan-xwyooddMeH8V?`Tb@o-44G$aV_gS;|<#lzrV74wAFK+V^(!~ zE9AzlS%W^!`R!C$-l*E}M%VIm-|MPR!;7PGuI+vz`NZ+vX+K9F%-s7}*9n)WFT4C@ z_TFueju;m6jLpGCLBnm%EqLv((l0``eRcYm{iUye_VF`g-fvoPR$p>!+|o`@Uya+E zp5{Ba!|lw!ZlxybZWIjqY54AhvsUwR&R<#o)#{KRKY#h##i1$Hzy5sF!S=a+bEob- zo4xwR^))eTrWBU{^xIQu@2&arHScD1x?`V@A^kv9+L^CcdWT=O`*2d~l{Kv!m^xTZ3If+>s7k^iJ7Un&a?2jf2N2-m> z#v^}CNQl3?1_v+Ufia?GYH&0c7IO>X=olaO&`3nXDk;Un z!#<==O{YW0uxgr$5S@)x%lVn))DF{m4x>U3(Your+_fYdlx$*bYBtW%rV?eKcn`|f zgd35KA)3%g-|&eeyhH*K;^}7rNtyF9#na?KL}!wM0_ga+0Yfx>`wr0zX`hCQl8H3D zAep(D67OJ*PVJ-9rf`fXjzptK0n!+f0^matJ#4I61eKmE5_8AlVLS*#9u(RpJMe^m z+8ix@UZ@QXv}ID*^syo1qJu-Dr$hushX;oGP7Ks6Zt)MD6fq$O)2moP@wasP$7m4oF$eNPesw@=)hH||JdlM!Qqipd_!!kaF7`e zWp1S$nvf)VLW9H;v|B^CPm&=Mq|ppS8MOwtc#+s_tlWZU(+N`uAMS}fgU3ckP7e!= z4hx?Y)|$E7L_I;_GRZSLh2-KEmYADK#}1mt)ADGhVc98DQZv&H@ziD$ zY^(xPW8;zy0g3VH$e-dvdB{f-5ai!R+^uC2m4en>r{eV5w2UZ2TqYKDhv3)O^Z~;{ zshOl2vWB6ZwyFh}x;tOEB^{$v2Bl?OFd?NIqVbTcOpe*&7Ef`+`LW>EV{}AV#8m&_ z(1^%r--w7w{tt%1F37@R0w=HiXu~L6E`GnVVk&V$>hFa(hGin}IXy z(F9EbO>`RuQ4*G{4UhvbcC>WHV01uu@YKL?M5NR3cr?;2Ia)yAMBmVW=m^-9Naz5a zz{yWHM3$uZa>T&!@JZp(p_9TVQVZbu`oThE2A2lJG%GNNAWWhCDO{qQ1Gl?&r1xZz8l0y8pF`ekC ziNqnwhUC`hCOwH1-=yn9Eb34v&RB;x;iYds(kWo&VlT^>p5xy^4FWqlz2A|QS$^(Z zE`)sUj2E6VHR%~?b8u+BCO$Sb6)&g688jK$shXrzO~9lGO$yGJbGNav>dy&(wd{in zFZ4P4wtNL7pW3$$?ttX4_pKN4jOc!$&zZNsf;)8X5BoNW==QdR--vF!^p!|7+VdM0 zh<*2aESOXE>{vOhk@dxSfgO9{-BQN7NWPj(psje1oqGIUf%BhnD_>%0G5%t&!g;)K ziJe=%lH}m0!6p7ABAk|~k9fZh`GnD39`@Ce;A6yn5)2y$Se`T7>#(mBP~wMuxWI?~ zYA9S}l*iD+4SpZ?bLZct{u!G;MBZq57UeMgX|NSU{{He1+AE>QrN-rs%jBoW_7M4- z!QT=OR3OTG1TK@G9$Q1??*iA5e+({)*REiC&cd~6fP)FU(u_l)k@h`vnk1N3RnlW87) zdF&6R8H*&0SFuQEO`g$@34a_>vdA&k`fIT$(=uQTw()8-KZW$i<*d&$I>+Q0V>H`B z5^(u3#UFi}nMZ-{@=Y`$m6zzc&W<@_)mbDT-RssMs5E*1{VJ_KG)V z_fozQk1$Ff_ZQM*0fO=%x^c{9gr*qx#dNP3p-IPmI^8?cy*2Kw|D$CmIe@pd&W+oe zNTy2M7eJ;vAX8^sb}Am1MiT?sYHW5uw$5t!;nFbpF^weSyV2fpcb&W+CS#Io9hWc3 z*}3thCX%lbvNn}(CFJYO1mvd=A?#1s_(GF&8G5X-7D9zy#i0sZN?g%-?2ozUnzvOwM>fh zR$E%GWrEY!Zr!@{>fW`pO@HS;Jss_Btz8GU`*ugx1ed` z_Qkf{)^O7>lXNC&TH`ZoN*4tAs0FLFIJ_bRdmcl`uN^B)U6~gi&D2*eqppMR25xXQ zV}IzkZwvVhZO6}6zrLWU`M`tHnbHZe(O)Y@n^gOV>Nk67Osh?jM5`1^;1}Ba3 zZ2L>h!0s0Th}WI`!-5%2d7`jJ z3%!xT8{@SnofMs~?$eBWCnl-@(wyMHymaBq=ssVOZA*9cB+ zdEw0yn6Y6It0+~mX==N?@JoZ# zr435vQLtEm_^v1cspzivLOmo)R zNwAz(Li*5~b+*jz)5S}$??7?K3wq<_znTxs1I`1Ae7~$W)^x$~CE&e5p|8m9!5l4n zv4~6l%;)1rm1j#-%u9?Hh06M=|Zsbs?&-qag!#rak^2>OZ!CuXGh2OODW zv!dI)9k7`iJMb8PAo!MkJp@UVl zU_Y;~1$ZZ!cJ?*aARXm*$3buW6Z9_m>wOv^kC$+SNY`grg&JkScUGmc6zPq%N=v-I z&WbXZ>c66NHRciz3dl>{mBM@OA^*#MLQ(LN=qgviac%Gtbrrr3Is9^*;sJhgydJIb z4$FSsTm3G`es(Q>_ZA&1xzkT?G|ux!UHhTVeM_%L92NC~%95zG?{FREvP8KrJty3pdTf;HbDb(|DJW`~O1uHuKEUOp@dJRr`qYCoqhpSd;=T@V%-=p?@bZu8( zR%B+jTe+%MLD65KX3u`u~j*|27WK1%{KIeOwG{tdV=2$3Xdw#wFF%!*7Zs; z@Z?t0V8z(YuvwU zY(8)qvLU@8Sq15!f6yOGLH|y$j>`agMKZV!nRzN%nGxlJfobfDE71e;Rj?6BBcL;f znUUPo7Dz{3Em%d(yO8s1dL!wDFD_YE`r^K%8|jIiSbn0t{~qxr>5-{UiaJU<2c4AL z&~?ZrskzyKY@QqISLuYSGZQM!7|XK^6P=i5mz@{uw9}&gUls)uD-yGIEv{&;%-TPq#JpD z7LpC=f;P+Pk<6{Q%-xi%A`$xe%n8`Z&U#~|f|b2FRA2EH?yvf~ueBPYuduX5d3@d0 zItkWS`k_BmyXY%ieO=ZLhTk4neMJ!BSqh!jE)y)TkWQl~H|C+O`~i6f9g*y>x&!ot z*IktYb_cvrnW=uMd|yGYZbkc+HrbifC+D|T>9{B7X7hnHhZ(m6U0d4n8ii~dO#Cj$ z@f=#??U4PtwfNmz^vOf*0O`Yn>tE^*L>)8ejW?kOR0h#~Q*XqWU)0$TcKBA*#IvGu z=!X~vdw9nV$Fd-91KN${lDyO7g}l@6!*<_Bd$qJVzNO@Ay^-v-gHm7NV{>8)6ic+- z&5EA$;<|I&OZHybL(H?%fer6wp|7B}L$>{pY@d-A)cQ2#WsmUd;F03oQrf$1Q#j1a z$9N5Pq0z;JmR`Yz%Y4dd)y(dslhFN29Mw7Es}D+bNiBJ)ES+L1f3Wo_~x5sp5^N)07kyidA*OJYRu+djc)UhJ6yK4B8&9g=u*oHp2 z(1t}83Jx6{kZxHxo38|qLB4t)OPgL@#t6cE8Z+7J^TNBKzED>CWjomXewHS2@`d@^ z)rgaq7yk9Wmrn0RTPhJ8PonQE8oWfm9%Vbd25pMUSBQ2+wvFujBD5cjeT*?m^;)q$ za;5SZQC~jjFB;Gm>JYCO^lFve_rxKdSZ-e_Uhyq1hv9nTMYJuFVIATTeQNt8KdSo( z*x;lBeMK?)-x9R-1+$rP8Ty8W=-1o?d$+j-umO)j2T3O|?x1uf7<1TTyg@RrGUvKc zM10u05gm#n@?zQAu0{7Da(5T?b58+pbLf-gzFds+tJu$-CV9xb7IQmA`8mKQiSbPI z(}+Ijj-9?Duc28Q_xuAIYMkb&2A#j_>ybybn#Mp%jDff7JoNY2g4rxD}-??|Nz5;!YJ&hm4ynblSt5Czd3PIB;md$t8u*f~286xN_ z_6}wh6U_7#ucJ(QOY{?HgC+i~BDk}@qI3{526csdFf$hV>L*+3*yN-*p(0Yl9LrEf zmwf%?ZEX}m;r$lG1a9%fwBi#dLP`1X@x^`dV9@RY{T+ll?<~v6 z{DCqO6vY`LKPGb0*tU}s@-7CgHgY;4@vX;d_(SCbn?>>=+5Ed?@&%`D#>!&QH;VaI zNb*vfV+{B>tN7Rxwo0EDUYd#fk?14G;PRKoyd{v`&#;A;nwuL39MTr?IzPQ5UMLdo ze%vMIu(?EYr9`t>(KJG~K`r^c%IgPqPRzelatmlzF|ywj9*4?FIutCqU1fW*oriD1 z827NE2;*`i&ioO_2Q(JW!BWci6@Mfu4FldV(Ru(ECD>}^%&$lKeku_g*W z;3&F(P;_ibI{;(c%dJMH8^m8u0RKNCDD$$-?5k~&8Sj(fd8PHkJLs-A!bxVH4*LCQT=!Z7i zUdIZpS(&L`QMjD0y-qo|)2Z!TrzrlzbjtN#I@QJo{Ue=f83XaQNjh~C?d5vJVbQLT zUR{qkD2=l)Zo0Qfn#a=`D(TfmjHw*Tw}!tku_EIZY)lE(XsCb1I!h$!l-+#Z_Impo zf9La9jD@kD(rr(SV$9dD)ApjS*tE{GMR$tS_8OM6qNfyxd@gOkT4z62`ZMw%x;QYi z2xEn6mswKVr}2V6F0v!?{9mMV9Qq91m*?=AO6Dc=C}6%N#z~U$67ReELjUPFZBHHay0OeN&7r9dTJn7W@5SJocrHXe3ElO^MOg3p zJDw5NXovEMaqg?Lu40|hTCk~(&|2^H2mv~R_1$J>BN>kAZ$O)U%nRSj95dI*2`)!XTPBA?iTcw-l&0YiS`X;h`{>v1%wd~iIXS| z;v-)Qr~D|NJk0Hl7(2*$XIiqdGIi5PQMN~Ez9;o zxUgid$h=1^n)JCIskX0UG{_Y zvO8>vqo|kAv!Wtn^9y${mN(7|fG+w&C;gzCz8D7`YiU<_9iWn#{AlhhuDLL*GohUK zt!H*}YLcJX&^U_XFH>;6EB*U1idc>Zj5}iZyq)r+_H^CCw@J?T-l7lgYfsdc!cn$n ze>2!!wx`U2x0O?{8_?ea&|l%Pywh0cc4L*29+J$|vEzJ*XU}f10jM*)H!arpcTLSN zWSKKbC!AYsD9!Uu$NAw{W+2%t(&t1g%O1<1Z~A0so<6RE?3V@JqqD>3D4Lrp?x>t8C#($FMN!^pV48A zPWfGj4Qlomn#4SOcssOg8fgidYcS`!^%V1I9)vW@VW);kX>L8?y%e-U15*g{wUudMQ#J}x}5nWqRb6g7qIMwxv(Xhc4-{TZP=+S zrRQJ`J5{A60{Hc06_?`i%&_x{@Pbu4Wl-j-pW`KQ=s_Nlq7Vz9-b=wnvV~}uvi*9NP1n1cDxM{M2ql`@qNfWVX~==ojQ><&EdISg$R>*xbpB*2pnV!SiXgJ)TpL8*yO2E69)J z(v6QNtdKq$>2@HUCF;g$m$|D3b5Dxb0d7mA?*Q7-&TRf+#1Zr2^qe`p4y|tS*|{nG zE9mPJo$;)rZ(g`7+7;%9^BT}+>G3`Yt;bk7t0qTxW%FHZk-r_Yb(y}WJV^<(REzIF z2zkYLHrHVft?>ypA9tbqBe+l0=_^ivzqvjrw-45-@xIX9;i68hvx@Ck6omQ7ysoqc zfVn=_&5|tf?5}%eZen+OrcKZL)NWKpqO%(AB%%X3EXNvjBGO$&TS@{wYn0J6ey}Dl zJeZfG5bM`9D9dq^vY{W3boFg5D~)|!P14kYzSXY4QneTL`5pGC1k3>jSDx}^#@{x3JnXj^mbXG2x6>Oha*RhKE@pqcVy0(g8Makf00&GjrfI}sP z1M*9vg$`G?V@^u-kFkzXmJ!iuz<1N=lDqpWxc?28tgjznEZ~AQ#2|C#MdQ(8@Z@C4 z=HmfpBrZpy;i7@8c>RviE1O84)u?kk`w{io(nmFU4ALgT56>h;ovH+#LX^b??WhFv z2U(V+cf_A7+K=oi=UZCy^^fX~{<_s-BM2efl~HcMse z3Z(MwL7Y-tR5pG7>K;@sibrv-n~ZNDt44OH56!Lix%|=kTn;)}&2q){*?lgZTWoZ- zouHE9!j8#f<`}$BAlfhZwb(B{zQMb5`)r?uzryKjdCg*3Kjm53J}34<9)iANFrG2F zRLyIeyF|YsSWusI6NI&TXLjm`o6Rq1AV0E+%}7V(2*vJSI!f1oGONZ;qx*)w^&EJTYJ^zLGN#I>PL^S4M{vX` zwc^i(<0y`y9J4t7%;P(9l=D2p!y7o>2e&;@&B~G64-x%)l$o_n6VoO_Nh5619d3J!aJ&^~Ed2ksIuHnHH9xUgz!(JZV+*)B6Ne+yW zfWvGI7m~(u{4lZ{s5c%Dj6e+nCj-X^)kmbM7}l-@Zfy|lhPPH1+=c*+0K!WGnRxya z3!Ba8L3yKxMB(O-e)DDc@$h>oyfU-lg}l(i4}(2&%motDA&d@T#{7&pvHpeshSh6$ zuErL;cHu!A9t7UVeXRan72+50uYn64XFERr{8H7oB7J_zG5a1H^>!Up^VudYL3B;8 zP`@?QP)(08zW}(q$h(81iEbIXETjfd-Dy-8_s~E?eHU&-{w19dFAr2ZYs*FU=net} z1daIj5-6}~LxBSsj$0)#2*qOv*LB2^4f9B6OObp|am+0)wx zt^$DD2Bq=w_Va=yso;ir1IEACfM}-jn_DF+D$2_Pl3~qOT)NSUKzV})1!xoH!*jNS z`!jNT(74p<#tRSOMF@ei;Gl&d$74U;K1m8~&eq!z5XN>>mr;q#) zk30*9?7XxvQs9ZjFgF04`wuE)5Mu>*EL0Q93saS7^9G~AzH_E(ThnJg&GnX z@LRx}Q@>28-gS&3(}2SHp~;<`FgAo;fUr^&c8!xRk)N&-!UUmA0+iF)3AXWI>C~~I z6OMT?A~->5JQqswAkYNI-;)Q0AT69LVK_)E2K5Cu)`@$8vce!=NdZ9Z5#FNH0z3dm zPFe{1pL=w(9%}9Z9^JTtblv;r(2yjLukj&>N~C)6utu~?h8K^G=k)t1pk`rk!#Wf_ zk|+=lYVPqIr!+Q%Q{aaQLchQx!}a4v5F~*Q34Zg^bK;BwhXlMtctzj^wHKHeyd&TR zb0^qXcyTy91`6=8k?>mxASg+|kX{Ec#XJD|62Ma5ujenffF#(H1SU%Y*Z|NCU^Bp4 zfXH?&2!vwoC>%Pl8=x5ss9u20Kn#5VdjS%xAsqO(G(eaSU@8C+KSw+j%?mmKqItmp zu7`l;27TbpB!PWXNM8xO!v-LlFDwFx<_utGR{+f$m|))(%^kduKg=6oo{vNGhXin= zIYcAofkX2LP4EYn| zV&#$`4kr)TcLtf5W9yRdS zPowjo_?uau^=Ymr!5C38VomBTg{;oB(GHk3BKC7XUKg0^{H;hkNdZ;(q`c zqo4Crf#rd*3g4BEfo%Gz-E zm=PVn0~&`tkaTn|h|UVMd3R`#yas>Y0&oC1O4#>?vqTLr&5Gn`7(kQV0_sQ(t63f7 zX3+iy+9yH#Rs8QTvX{+&Qeo{SX$Cx*&i8?P!LTli1wS-zRMteuTf)_uTgQ zwZ7-J!(UzBkHT>jd^l3+4t_y?NY#NkogV7v5k{v1f?6DlFmG>as6E8P#&Y~Y<4&+ASgQCTj1n9ifVFeN9cEKQe?MOdew~86en?D1 zdJY1pbSn0qn}aRr%0NYc{t0>*%_;(u`u&p4f654Z#!YWcrE?Wt@O7(T@DW2ep#WGO za&f}4`F=cIL2x^Qo1S0(LaHYf7RomKA4Kn;c26v2+lTV&e?0fwIb3&N;jR4>O6zaXRx2=371ZG$b)(j3{H@dKSK zUIEx`PAYdV)Ff1nE({F2Cg=d#SfDrjDegYdt&U>L!XdBFNYD#Irv};vc?X9Ea+L94 zVEfi8!rXIp7-&y&1Z_1?9Nit1C0Rvy287W7M_3i&tRi^z;#Xx@=t(FGTGNAS9^{2; z$u04Oh$Ge9)00Z0S^83;>P=9}Y}i1c1BNt?mLYr4?E)6Xq4v=BmSLfxpzmpsZz$Cr z7A5ZBYlRf1Sc1J1=f&-%=cJD^`u)HAZSNj z;_gSE6CCOQ`YHW@cDV6?veyaC_wYs(2t-Q_^5g};Toc-qPr0Z)v%j|ozpCG`<<{8| zaFHrCAZT~%q zI4Xxq=h0H(Z_|Hk5164tTP*ysNi8CI?XrWokRAX9@CT96cg*-L%fWaaw38+5Ers$* z%mHd$>PHRmvWlR3h9P}5VA&LU9*ry1Lx+IkY-x}yM?Dx<(U2D=0a|4ER2s%14y1X8 z8bQZ)KzyhMw{sQ-LykdI&)}WL)*oyr4=5511}cnH7=Vr(y-1Ok&}%^RG6dUTZ$4*RNL?KUDzGrD4NBzX z$)#ANiv~0LPS1`&-+XGu;-JT&hqy$?D|cQns7s6Fp@&Iv`;Zdq$1xeiBgylk%fdO7 zi|Il*=xahuW;XQ)Y9a%cJbv&8T<9az^gCVu(3My|q_(HJuc7`la<2nFuyhYWs>vLG z?42NbFwH+SC_sxE0c|r4v!il26@?ngVNx(sErY`lFTiZf?UDYTAE!aTTz{zraIlGk zc4@HKAEU$G3V4uz$6tiN-EVb+6!x%b_VZ&epbuV7aB}Ag|E;iv@XHpP59)4Q0U~R; z^EpXQ5nd0Xowkv@4ET_r9|0p^D0?Bk2f!k2{oFkNUR zWENDD^9z~%B>jyx(SlHOs8ayIh2L_gaa^c%P^}T>UVs&b&E()SpH~mmMhG8%TOb#= z7ybw@Zr@QLeK6!025nCt)*9Tt`=fT(;vhlOkHAL3{jorY%A! zLlOSY)ZCswp%t7LxKG{0Fn$D27q7B|7Z)uDgt77JQy=o4E(0O z7a0;#TnS#wU_1S{hJ;+cSs?;z#|&hXZQL*)39^U)4*Q2Ka{sb(>;6v|=KW>o_LrU8 zUv_RI|AwvIpAGyB(^fCWG3*Ryjlb;N{<3rX?>2-UkNew($bQ+mg+(VA75`=D_LrU8 zUv_T)Ep~3B!Om?2$H2({uXb)vlfjG^-=wL4j`*-;2uPX?bN#uY+Y^gCV>dl2tld{@ zd~fc$x$R$!_wSZW>6WMWH9mbEbaVZG$k1)_e%8F6{yA=L?)bz3JB=H~pB@;bZL1ra zsp%tYIFr6#*~Oy2&E8?g*ZnDh$@W7A@j{y#W~r`Ud?Ri- zew&5FQAc`r#GyGxAxG62Cb}Q#PMaSW98B)MsaP@b#T4DwuVpVx3_SJfbI2Zp?TOI|=c`zsJj;4;R`o)=MK3+_>?n$ zg!lBV^UsS#NNjdI(A=ny;Zw6iqruFR;*0f~hs^lVPr!n0$G5)Y8oIp(evRL{ znq%npGA7Hkvqoc~k(1GN3O=aWpsD9VL3 zT9axXo!)enanjH7HiNP>+CJRLCnr`te#Oy&%lBeG4LqpG@?&kwJbUTrr2bhSj)v5p z)fcLKA#*xrAhPbPc`xqMLZ8uxdS}JjkMqiCxbSu7&FBt!cg5T1$A7r7tf+^m*0?Nr z@u+iS_SH@pJY`p+F>3lN(a9-A>G~p*8$|ILXB>xYU&H;bHo5tZf#9g!Ddifk zzwBmOC|GZ9%g8mTx{>9!Sxv0z>daIT^VMl(Msp7=uxh{SRNYV>)id?bzV#+;dhh&& zc8AxDzp0UV55`Lki$g$1i(nn&;Ms+tn|VCJG5haBcUKmW_HEe^+D43E8g;#S72=@bQ(5>3eo z+e*)$A4U0`FQNKYu)*xo73!81^wonQz6G(aeRBR!XMB#77E9N9HiW~P|nI z*7xewqb&XUrUQ-MZLXt#Ry1yaVHa}Ku&w4GoaIPY$Z?xaBaw2%9h zTIg@Swv#U*mhVSxa`5-K712{YuUz9swZffO zb2KmaX=Qt?b@jE4b2xEB+A1b(d>HYzhHZ`Sk*0W@HIwSF%v#?>M51T=FT=JAsef%P z{8#Oc{~4$HW!RRx^8IDl_Fu5_{bktpmtougFAdu^fni%C&f>g}8TUW8ocN7B+cXos zPZcjBq8+BqPVIbsPjJ!3&#(T^+Or*#Cq3MrEm==bM^AT{JzJi~AKSBq4B);J&z`M( z&3AjYlDE0`Y{&M2k=uWzJ=-O|v<8iMu+K z$LoiOZEF@ZKjHWGedtY9{Q*jv;eCrMT~{&M=+j%qhsK}Td`^6ayxN$%=FcCq&CR}6 z^cAM8yLWm@*x;<<5^Q5g_KtD&HM0|6q|!G?=| zv#SJiZ&sA!MRRnnZj9|Rd8zray{G9OML6Z;$Pc2v^TMRocubm-){x#|b?&BwyX~l@ zV~wj7w-`At_=fAAD~!I=2Znj!kn zXS~@+bbUN_vl@Nn4vJCcsUq{sbtl%jtc~$04=&S}^%zIn8`fL`bpKoOa^La#XXNE{Ic@*f`mA73=TALrv+-Q(NQA>x(E4rgOoN;lAT)`WJMyG z(nG^&babJDmz&a`KbYQDFFSSq2^Ar4O$cIPYqQgh52#sUd&MQb`PLY)kxak@-fx^<5Enuf2fnG_BZ4p zxv4h4-N1nc)vxEj+XA&Xi~yerGmz@^&5q4Z%7%{=E0x7yQSzMg-12<$Lh@qsQu7#j zWqGxE&3Wy4y?Gd0l1*Zh*=B4C+l?KBP)B;99SwU?) zSx71*7n&7P3f&4r3S$dX3mJuFg|&svh3$pCg;CCe)S<^{s>&H$a_Rq1N3{?>?wG5$Y}jwO5Dw8v_P5fP*t&;R|>~ z047O*OD15$27D?x7_|aU-GEge;6((?WB@mHz|I)(vjGg90Y_iJG6L{S0!%XjS2kc< z3HUYu#;t&JH(=cdcoPA08Ngk=1Z&435nc>5DnoC`K!2!1j~GLr*g&s1L%;Y!&qNfE z3e}+}jG-@Vpf{YMKYXD_e#R8?>BYf~B)DM%acv-;FT_cLmS96GG(Zb<1NKC~Tph5s z0gQbC+a$o04Oli5wE~8HMMS_&9q_UNoO}VFB*29Ycr*YG-B5ob)Lp&AxWuN!xx}|5 zq9my#vxHqzS<+C_TGCz8S3)e6DOE2uF10CjF7+*qC`~HOEM=EgmNt~OmUfr+m2$LC z0Id^2W?7wK%&=iNGkh5lj3h=TgUzU9G%#8j-Hbj4ktxGeXBsnYn9fXJW&|^dnaN}` zE13<wDCz(geBj=grQGk#9uXB-*lGu{e5=Kc`No`4U zNqb3e305juN-8Cnnw3&Y-AY4BV@p#@8Kq^VwWZCa?WMgyjYzpkEC7rl$sjSv3^N9W z;l>DI#4=JD3`QBFmeI^;XY?{KrX-WZBs0yJ6s8+9gc-|BWips$%vxqMvz^(?#Ihu_ zNLgf%(5Ga%WrbwLW~G9xepyy+R&!Q+R&N%TEtyTqCTE+0^uAkm2ypq-YzC6yC*wKy zc|w4Oosl~g53_6VhB1)|fbzdCS#W8nXYg4}?HLV${5 zfsRty&A<^c;3XI=E6jOKEpp5f>*hK&>qqFi)w2yTn!7GXjWcL?RyQ|#-Iir{Brr+G>6tlmVjpgHyX}H5 z@=P?GwBK1Jm~~2dn_OaPW4*O?hG&ghs_Na{QZu$pG3keEJQ#bXXqJgK$Cq^fTc>@R?#MX7#U;%4w2@o&#|u0C`|n3GRjS+Hj}~X$HJkHU?+|0s zm^D&LaCHdNt-^gBdR;E0|52-VROX@4OJii;`HZ=fCt9hq`DpZ6MYwE_84z3!rArCi zs-9Zv%o=UpA)mGU`S_1R7c}auR=0hku0vM3H%0G_P~EUJKhrBb@lrZ#>JyEFn{GWM zM5k5=6xJ~2q3gz&YxM?p+JZOwD$eU)HVM?#WlSC~b<&Qwu?e@6EF&v96*~$h+5Mg? zMZ7#RqAvB4`HNJi?jy$|qIQ?B{ov5zmU>ew(EzIlJwaZAszdjTrrcO7vtZCpVB3rn zlJ$aD#t1GAIx+t1yZ*1(O$?*iiEehxt@jUnlwYB*P?$M>j;O_Zo0#adA>aXmLac;+aDcQ>b4zgKIizkIKR#>^Ok29 zS~6&uG!Cn+dFIl+F)d%k=vbGXou*Y=%e(pp{Q0)$$&!}V<&Il06&yBe?nR&9zFx%sddj9*B=r+E zBqf}xTT-y&h{IwJElY{RfxZcNjzs1IxE>VRTWu|PEojT z*g09(XqP@MNdhNWd1170bf?C8Wi^ZSw=NpIyo-6^u*w*Ny|1r+Sr#iGUVhrY@xUU% zir7O(3LDy3w@yFG^I410!651-XT{NNuV1Mz8x%frLo7kw)ml62v!2151vf@bpR%U~ zOTb}S*QS0LJ<>~Mt>g`XCxl%e==u(RX{0`^2#4LJeLUfI{%DI!#O2|dSd4?tQv=%+VbhG zRolQ#8-m0DHPqj0ny~rulj-ABNfN7!{f_6)!mi-3!-uS^E+@srYN@%tIV`v#V?;%a zWyplMWj9Q!5{`*yuf^IxSuiWLd&K@%)D?M8Z@0KNg&Z|ozqq|}s|1{oie+dfLj zw7q&+JvhC1?TUd*iLnI^r6(gWaXj|G#kt%n@Oao{m!~B)@%`)lcQ4-Q+d9!Ir?`GG zxh&!lHXe`7qGXN#bam1Z5|v&@)SsPxBd(^!TJ&w@6qCf9^lbSuY$_fTexQ|0WflZX z$s(1{`}nFLr&B!SK-?SY8MVbDE23BJ#7yznlKLvWd82J7vO3c5yLbuMHR(6gRkY`A zp>#ZXE~I(qA!d)qhDvrUk=Y#?$=+?zBwS=T?%h{nQ{MU`SGzkuIxg{FxD#{1WAoC~ z@7b(ZzB*8}VKVzfRZo{q;Dg?iQyT`8ACVZjC5N#9Ja*iq<7?kO^R|mU;*;de8x?l! zJE>5h=e?b}LvpUnzN{BmC?302olysqS^Cq;b>6Ypj=yU0%UN;jn6R!@voiJffX15w$h%8tC=qY>(+lt409bO8)a(}a1>;C)t z9EA#s#kqI2TckJ4K0D{g!@(z|!dMC(3ouq0XnIw@uUvj9Wyi9FtA{sGHf-Hoa*Ao1 zzraRibaci_@R)9pp`Z9p zf^5K}*ks9>8dDp!i8l$KUkHe07zrgkK9`4`#$!`YXa}B9NpBS|cN5x}R2=C|J^ryv zNqNzUB|D~B8j-$YO@O-+A^B3F2-S$$A@W&dhQ#7<k6weSf-6H*ktmPS753qIwQDw~_SdPz*2g0<9*>cAY#RNzmiEMy&Y zHZbhqg+Q{4*wIio=fTS4DX%6zGmA=@=|d{Iod5OKyAQLNYa}+=GUDYQf+*r3h$24a ziXuvmu$bF^+9YYn%}lXL8tc9P(|H3q^hZI=F=QzrfyD$-De>8UK7N+eP&&yr$Wuoa z?lFS5n3QCAc(|4q1bIS`7Hsk9=#aHhkbso>w-k;x=DH+v8Vz(6c#&*plNR{}!rq^I zAW|_xvNY#NAL;;lI%LiR(uaD;VaRimZGNoNIPw^7oksFYn2IW;r9&c5 zk}g?S=TAld&OUWd@Hw~n!w6!I)g@3DbK7K;#VOISFo*P`;*?{PBnKxn1gH6n@9vUw zv3WiFNzFd@#xZFg%PNO_#P)j*7_N%z*XX-HC1m3Ryv)0Z!0L6MF9eFrIK663V$bGN zeF-ZjuDRHGe$5&a$7|PaEHm7GKD$F(-lW34h4x}zpx)-_6;_&dhbd3ZO^lp2we3{i z_KBj}?e+BjjqTb?jwO$G8Sq z+KLQJQg-~f&9hssaQWd0a?g@ftgr%I%>HnN!w23;;y`H<^3(5Tju44 zj(>G13P#*sD1YW!Gu+*o;EIz7ZhTl;7F(YB;G z{vcHN{&)vz!k|XU^-lNP@+{TzhH(Z#nRL zsA}?R6s$m4MfN4@!dgpf(^Ot*o}mGHKai_7&DUL56E-cYigJ$xWp znnT^`KMiMrcpMJ18Q*rSXRmT~ms}TVWQxz60gKQDbWvsN?7|(_RqI2Ro|a}jQH#rU zkRBr|9NBw~P`ByM^izYg@!k$E{cl=>D)^ZbYPElv>5Ru7!to=DoB$xVG!) zeRHMcFNs-m1m=BxKUm=v?&+$$&~HP0zntUC)GOPV<7gw^zoSkIv3s|_C2H+m@#-16 z&GMH&xPJ{JVr#17M)uWqxLmCt71|~5W!tK>H*Ac>2Tfh$xV!J&vZ{_Q{NmE?uA(}> z{NY6nHqCOu-BX?|3d{F>(vqJqHR03T5vyY|D&EgZcz)(_wk@;2DX+%qYSq#;?#Zq( zc}G)xB0d{tc3f7!yF8J#S(_X$2qT{$%j1BeOx2baUHKUEPQkl|8E41*)MRApkKE?( z=YT3?C7?gxfb#rK8_xU|1_#r5Oi#xUxSWxWF5+{1rpI^wR~Yf1$s3+()_rByxPATo z{Hpjp=cX-EUvgY|Zv9AME4>Ah>zY5WbMTGnI?i~%?MPB*MvbRpYG#d8^^zNP9Wlg~ zRnnO8C#{LoUtM8+)LlC0N}bid@A>07)AYO_8t+8-#*8aWiR>&v_BDy5k+ zMWZ@<_Xq?|-xw`&w_jC~lnA@JI&_|B@k28cmx=`)%t-0;4l2sz z71b|H-BuN83tt)NeP(?piL!FQJIKjhO(QvB!PEGzIh29)$y4(>!)8`xN+hg5q$Ax@ zeCw^(<+T$9n-gS1$GsUR^m;~Pi^FRni-9c1$@4c(sGne3di8FR#t1P(hTl7)be zA~BX9ST1f8=j%H`^(PJ+$!8kCY68jrf05N#@>7AVpwVApHQ(3_B3T}LiHqa1)+llW z*#tJR3^(cXvkDFPiB0mU|F`)B{5I`RZ251crJyR12)1NvvaygTnh?PU2E!A`lga9Q z9N`Ny9#xF?N1qt6;h(18x!JsW*XW)FiB5ivukYWDF7S*x5^+_?$SmQtT|&*Js{;6e zb9r?mNfuK}!{1F&5La9_xk6BX!m5%zeQH_WH6jIW57*?F?3Cy$zt$Qp>(RY3UUg!9 z)%dkj6(6-MpDJx&N$@Sd7lv;Sy^z^r>h(myMpDK#+1TB|V~$Fq=hn1^Q%g0HpF}9M zh)L(h-X3ioawP25&W$@`j_>gK;^>~t{@}m6_Pw*;i0B5~;S=g%6?;54Ds6SY6qz2g z^y^lM$HB*Nla2@EzDiu6*y-%HuS#5VN?=xf%*lGyDb{#mv~7vh@s4N<3-$9dPFKzK zk9)5;PG9@MNl!^z$*|lmYwoVr53H1hz%-}Bv{9MMG)3J>4zQ&GkJ@l{DJY1M*Z;^a zrO2b8dk91+(Ix+kb_O(A;P6nA1OEV-WEt#5C2_TsfyzQSq$VN4M6*Yjbn5FE=uFc$ z(9=VAS9neXsk?(dEs~WJrz(i8{}~HCf8`17 z>6e=)pJ;08vK~H(n{}~K)%N)6$#u8V^?kBL$CtVKvCIzFSCnsW&dkX-UutrrExpC` z9^E)+?iB~s_)l|l9Y-6#dS@HBIxWWYcp=NRE+?UHzQ=;oedk`>Gv4u7=m{}Ryk6aW z@t4cXlE=iX?l!1#2!%PQi7{n)xQ_g`BNtSx_U07@V$#b96;)Et7l>w>n=8$ux+lh& zQ&^EM$q!`bF1e-kbj5hbsWF+2azbNsd}+=41SuEh>Kn_V7vEdy)nSxKb|O3(byOpE z^qa_ONm=+&(Q4imNfi-qFNv~^3q`%o)_AYjm2ifsIx%sD97T*Y`il9}@b zc)!2qnYlB=CRo{ncxJGeviw{doCQ zmiHl{j-u<4A|nS(+luhwA*HkAUqr;*d~PS`Ht7z{Jx%dtnXhMi#^}Oe#^{%K4qd;i zW_qO4>GQRlaT2RfSwypv+Zu13+LcxKX6LAN-9=oW2<_ErpUA%QfZrbGLje?Xd zMQNAncV1qddmtx0*jc4lPrd@fyo{(AN5U2_X3 z9M3FUA(9imCgycs%8G=KGAfs^1+wax`_D>-#SR_N9e8@x(j@*<)Ao+g$@@GiTwm^z zo93dO9%xg6bJf#6*``U;PbOH1j^7gbIlF({>wc!3QIoYp0p0Fm64(_HM3R#z$6gltNi*{*fZww6q)U6<%*>y zygfgtee0^p{`((yQLC#pO#|BqZ9Z0px}}7;YBm<+ZoliC%gvOOL)vF_>8DPOq6!E% zzOGn_UvhWTO*wV_(j?pRtGV~%oq~M}q#rF^G&uC^)$3&IPRqp2rc_0!eS=gmaPaWy)Kjf=sOj)03dGKH(7QuxJ=I*4@+ z^TbOL=KJ~u>r5caBmO8ME{()&Kx-#yey9%!_(XA-w2mZaQbQ1w64uw%HJYZQ_ai?Z z#Tn-C!5~@&2Ly+@dj<1T2ulfD1cxEBDLP}x(x?bgsS!&+t*UjHd#D%5-rkb$FYuH9 zpK@VV^W;E16|-^U7F}H!d)IQhtn@y=fQly9dyRHssv8nUD|S6R7O(2&#az2nLVAVV zjP88(K$|g_FP{vs?YmH+b^FrY4~6*8Nv|Atth!@WQ=K|_zDtYL0c|-)ov6*SxgMCk zSMTYi)&a&#`ri$19z&(r?6G(m{)(0|CS=igkJRlWZV*JfE^)|g*N{Hz-2Sr#Sh4rCgaJKh#s6-lO2VsD^HM zePTsZ)4ca(>myC%-&}}pz~(W7ktj1<|mXWOzr`xj1(xMEimu{Hbn z{mn00nL8RYWxuWSUqVau{J=N2cgOSw>aM~Bl`n*3tTIU*@_%-77~f5O*X1O=?(T#A z%M`9@Kl4a1TP663JQ=aoQ3PeOB13^c0V4`9fQG~+7CUOrx3QhC$?N+cC%CYufVP)@ zn&1kM*CI~^0-YR6Hewhs^fu{y=hHt;6s?>Pk@ILAk+-Ig4u>iKCgD%B(?3jThYBYV zW|J+*M&Blh0{Fjcb}1|*=o2T76ClU%+XJTRq2!RiI90ddr-G@vDIfK}wJY!gGM46= zs3ADp0Y7fp4Es>=FD~Qm7)f$1Vl??qgZ&D_tC|5Z~y}+r}K8PW7I%|Yi4~?~{ zk@avMG`;aGJR{Rkxaz5=lH|NzL4z+g9!oA+QO_*hySIL!LrR1FlF#gwtE1jc*c&@% zXo{kg?K;fd_|+N{g3KhwTi5=b9%mM}jvsYzQgd_oiCwbWoKCL$U_NT=3a?$KgzT&b z#`Ub-UKaPUK}+^*Xl?J!oof=7nhZG~PC9;|?6#IDRYfFh<>HG`LRO;V;zH+E92gN< z^jI)uHGbZnCYQ~+c4wd5QrI9Yc2~&T$tp@=oz|36+5Cs6cZ3(m^I?nh*292bN+`v8-F&n&2#LRC_g6k#_MWA?AMZ5gKNicU&x+XBsaC_ zO+t~0!Dy2mX;n))>o303X4{xnv;?(fC{-%}kQ)rO79JcRbN5|$qG4agz zmu5Cw6+}(Ub>3;He|n166dh;pqq>rZ4)iW$zV4oRW6fK$Wo`YdX2{zWuPNK=^2)Gk z!!t75{=plu$<8e7;6Mh50(qD^L+uv+1(`W&jo*^{N zP-;jp&5s@&8VOMYAv>>csevQloF>NO7Gmb0UNjOTf!b80mX!o5RK4Lp9Tb}Sfe#5( zog!te$egA(yq+92q$r*z#6*foQ3xGUBUQ90zB`0?!f&Md7O5^pzlZ0FT(cpK54`-m zQ7IHqi;Dg`a`FfQc?fPTQ2d3EM*!3ksZ#X;HwAJ=bwc$v2cJ*~r*f3UA~mlhP`Zk0 z?+O1&kj@W6P#w9y-QhBUAIF!Q9@P<*g>pn?p)wF|p@0GUkJPRrMYSZz4YdT76N3b~ zpwf}so9EBPRcqKh;&-PR!*|SncY*gi-!ECcx#DqpM)!&hFLquuIeAQ8D=O>JdrOOP z2W#dr9Xbx*>xsL62=}%#=~mC6$bjOR7b{|~_qLp|JUbXZ<=*GpX?jfox5{OwKhCf@#QaYq_kS^6(V;|g~<=hizeVY@x;!jER0Q1;4l zI2j$M>ZN%4>MIKw%Z!t`Mna_yLz8kH-0fb>F|VXHRYo2p?iP#Nx_SEc3wyR^PY%iq zTh-v}XI1W*GreBvu{!YtP(MmQ>PN|OvH#gG0$%d> z)-}UUC>haY$?xJ!IB^|xZuBqHL)1T~ZneMShL!J^Rw(!+w{{ES?wIDfX^*^A>vPvo z+;I2sZ#Pa5LszL(b7yWFGrjY%^teQmHud1vGr%v_0F8F$8;;zlJ-g{&u>~-HQ*7q#d zXGN!Zi31K(Y+8NTLR+r!>Qd1LskAE(?+|9mUwwPyMYH2wpUsDx(gMZdR66w@aiLak zu><9C)agey?o)c66gdRFahYg6l@^x!aPZ(huV)u#Ol!(4Hpr47P%qmjEBD5e7k|1u zdS#`7Lt}Zry_H7vxxo<<&-STT?7bv6!|wSfm*ciA4nveCE5X&VC02RV19-nJM;b0h zM?UIWzgw92+E66(Q%GMpGagTd+p<%?$+w9J>BQqFfR`+XfHwU%jves7dni4ejQq$l z-)k(O1ADhTO;&KMIR2YML{LY9vy>(4z${5`nhq!#(*7Pw(1GiBz4~@*-j}a&8o%X& zzr653vE6L2EuI;9QsHQ^+L5>C6n}?i+|~3%yc}4cBeEA}e|=?nY#(jP-aTIq1}!)e zF+!y`QLaFu_MEw0rT>-^4`%s{^65^?zpRzD9#fjR#3u7Wo{6uSpw!vR3uQ;@COx^_ zrCKhl0B6CPtPLwhT-&iT@BU}Qlh;%2Zy%MBlI#j!w#P^{uTSja$+@Hr>((U8leAM= zn_h>?)ifI&Bz{~(_R+OkxkS_Sz?L%67!8|%jF%eMm82>JA5Gu6CwDT#)#c5J5n35u zdD9ZcXW4y@XH{+xn|_|s7pOMceSgz*+uJIP7_kidIk(eYm1-vvcPzRQu+UCsav(v{ j>~z&=lgyTTAp#>uxh&U-C@#N5nIT^5$K05Cf%*Rcf!U~1 literal 0 HcmV?d00001 diff --git a/wintun/bin/x86/wintun.dll b/wintun/bin/x86/wintun.dll new file mode 100644 index 0000000000000000000000000000000000000000..2ab97dba062208bcb6ffc32bef8347d586751038 GIT binary patch literal 550928 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

@B2e3Nq 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 literal 0 HcmV?d00001 diff --git a/wintun/include/wintun.h b/wintun/include/wintun.h new file mode 100644 index 0000000..55d441f --- /dev/null +++ b/wintun/include/wintun.h @@ -0,0 +1,270 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT + * + * Copyright (C) 2018-2021 WireGuard LLC. All Rights Reserved. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef ALIGNED +# if defined(_MSC_VER) +# define ALIGNED(n) __declspec(align(n)) +# elif defined(__GNUC__) +# define ALIGNED(n) __attribute__((aligned(n))) +# else +# error "Unable to define ALIGNED" +# endif +#endif + +/* MinGW is missing this one, unfortunately. */ +#ifndef _Post_maybenull_ +# define _Post_maybenull_ +#endif + +#pragma warning(push) +#pragma warning(disable : 4324) /* structure was padded due to alignment specifier */ + +/** + * A handle representing Wintun adapter + */ +typedef struct _WINTUN_ADAPTER *WINTUN_ADAPTER_HANDLE; + +/** + * Creates a new Wintun adapter. + * + * @param Name The requested name of the adapter. Zero-terminated string of up to MAX_ADAPTER_NAME-1 + * characters. + * + * @param TunnelType Name of the adapter tunnel type. Zero-terminated string of up to MAX_ADAPTER_NAME-1 + * characters. + * + * @param RequestedGUID The GUID of the created network adapter, which then influences NLA generation deterministically. + * If it is set to NULL, the GUID is chosen by the system at random, and hence a new NLA entry is + * created for each new adapter. It is called "requested" GUID because the API it uses is + * completely undocumented, and so there could be minor interesting complications with its usage. + * + * @return If the function succeeds, the return value is the adapter handle. Must be released with + * WintunCloseAdapter. If the function fails, the return value is NULL. To get extended error information, call + * GetLastError. + */ +typedef _Must_inspect_result_ +_Return_type_success_(return != NULL) +_Post_maybenull_ +WINTUN_ADAPTER_HANDLE(WINAPI WINTUN_CREATE_ADAPTER_FUNC) +(_In_z_ LPCWSTR Name, _In_z_ LPCWSTR TunnelType, _In_opt_ const GUID *RequestedGUID); + +/** + * Opens an existing Wintun adapter. + * + * @param Name The requested name of the adapter. Zero-terminated string of up to MAX_ADAPTER_NAME-1 + * characters. + * + * @return If the function succeeds, the return value is the adapter handle. Must be released with + * WintunCloseAdapter. If the function fails, the return value is NULL. To get extended error information, call + * GetLastError. + */ +typedef _Must_inspect_result_ +_Return_type_success_(return != NULL) +_Post_maybenull_ +WINTUN_ADAPTER_HANDLE(WINAPI WINTUN_OPEN_ADAPTER_FUNC)(_In_z_ LPCWSTR Name); + +/** + * Releases Wintun adapter resources and, if adapter was created with WintunCreateAdapter, removes adapter. + * + * @param Adapter Adapter handle obtained with WintunCreateAdapter or WintunOpenAdapter. + */ +typedef VOID(WINAPI WINTUN_CLOSE_ADAPTER_FUNC)(_In_opt_ WINTUN_ADAPTER_HANDLE Adapter); + +/** + * Deletes the Wintun driver if there are no more adapters in use. + * + * @return If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To + * get extended error information, call GetLastError. + */ +typedef _Return_type_success_(return != FALSE) +BOOL(WINAPI WINTUN_DELETE_DRIVER_FUNC)(VOID); + +/** + * Returns the LUID of the adapter. + * + * @param Adapter Adapter handle obtained with WintunCreateAdapter or WintunOpenAdapter + * + * @param Luid Pointer to LUID to receive adapter LUID. + */ +typedef VOID(WINAPI WINTUN_GET_ADAPTER_LUID_FUNC)(_In_ WINTUN_ADAPTER_HANDLE Adapter, _Out_ NET_LUID *Luid); + +/** + * Determines the version of the Wintun driver currently loaded. + * + * @return If the function succeeds, the return value is the version number. If the function fails, the return value is + * zero. To get extended error information, call GetLastError. Possible errors include the following: + * ERROR_FILE_NOT_FOUND Wintun not loaded + */ +typedef _Return_type_success_(return != 0) +DWORD(WINAPI WINTUN_GET_RUNNING_DRIVER_VERSION_FUNC)(VOID); + +/** + * Determines the level of logging, passed to WINTUN_LOGGER_CALLBACK. + */ +typedef enum +{ + WINTUN_LOG_INFO, /**< Informational */ + WINTUN_LOG_WARN, /**< Warning */ + WINTUN_LOG_ERR /**< Error */ +} WINTUN_LOGGER_LEVEL; + +/** + * Called by internal logger to report diagnostic messages + * + * @param Level Message level. + * + * @param Timestamp Message timestamp in in 100ns intervals since 1601-01-01 UTC. + * + * @param Message Message text. + */ +typedef VOID(CALLBACK *WINTUN_LOGGER_CALLBACK)( + _In_ WINTUN_LOGGER_LEVEL Level, + _In_ DWORD64 Timestamp, + _In_z_ LPCWSTR Message); + +/** + * Sets logger callback function. + * + * @param NewLogger Pointer to callback function to use as a new global logger. NewLogger may be called from various + * threads concurrently. Should the logging require serialization, you must handle serialization in + * NewLogger. Set to NULL to disable. + */ +typedef VOID(WINAPI WINTUN_SET_LOGGER_FUNC)(_In_ WINTUN_LOGGER_CALLBACK NewLogger); + +/** + * Minimum ring capacity. + */ +#define WINTUN_MIN_RING_CAPACITY 0x20000 /* 128kiB */ + +/** + * Maximum ring capacity. + */ +#define WINTUN_MAX_RING_CAPACITY 0x4000000 /* 64MiB */ + +/** + * A handle representing Wintun session + */ +typedef struct _TUN_SESSION *WINTUN_SESSION_HANDLE; + +/** + * Starts Wintun session. + * + * @param Adapter Adapter handle obtained with WintunOpenAdapter or WintunCreateAdapter + * + * @param Capacity Rings capacity. Must be between WINTUN_MIN_RING_CAPACITY and WINTUN_MAX_RING_CAPACITY (incl.) + * Must be a power of two. + * + * @return Wintun session handle. Must be released with WintunEndSession. If the function fails, the return value is + * NULL. To get extended error information, call GetLastError. + */ +typedef _Must_inspect_result_ +_Return_type_success_(return != NULL) +_Post_maybenull_ +WINTUN_SESSION_HANDLE(WINAPI WINTUN_START_SESSION_FUNC)(_In_ WINTUN_ADAPTER_HANDLE Adapter, _In_ DWORD Capacity); + +/** + * Ends Wintun session. + * + * @param Session Wintun session handle obtained with WintunStartSession + */ +typedef VOID(WINAPI WINTUN_END_SESSION_FUNC)(_In_ WINTUN_SESSION_HANDLE Session); + +/** + * Gets Wintun session's read-wait event handle. + * + * @param Session Wintun session handle obtained with WintunStartSession + * + * @return Pointer to receive event handle to wait for available data when reading. Should + * WintunReceivePackets return ERROR_NO_MORE_ITEMS (after spinning on it for a while under heavy + * load), wait for this event to become signaled before retrying WintunReceivePackets. Do not call + * CloseHandle on this event - it is managed by the session. + */ +typedef HANDLE(WINAPI WINTUN_GET_READ_WAIT_EVENT_FUNC)(_In_ WINTUN_SESSION_HANDLE Session); + +/** + * Maximum IP packet size + */ +#define WINTUN_MAX_IP_PACKET_SIZE 0xFFFF + +/** + * Retrieves one or packet. After the packet content is consumed, call WintunReleaseReceivePacket with Packet returned + * from this function to release internal buffer. This function is thread-safe. + * + * @param Session Wintun session handle obtained with WintunStartSession + * + * @param PacketSize Pointer to receive packet size. + * + * @return Pointer to layer 3 IPv4 or IPv6 packet. Client may modify its content at will. If the function fails, the + * return value is NULL. To get extended error information, call GetLastError. Possible errors include the + * following: + * ERROR_HANDLE_EOF Wintun adapter is terminating; + * ERROR_NO_MORE_ITEMS Wintun buffer is exhausted; + * ERROR_INVALID_DATA Wintun buffer is corrupt + */ +typedef _Must_inspect_result_ +_Return_type_success_(return != NULL) +_Post_maybenull_ +_Post_writable_byte_size_(*PacketSize) +BYTE *(WINAPI WINTUN_RECEIVE_PACKET_FUNC)(_In_ WINTUN_SESSION_HANDLE Session, _Out_ DWORD *PacketSize); + +/** + * Releases internal buffer after the received packet has been processed by the client. This function is thread-safe. + * + * @param Session Wintun session handle obtained with WintunStartSession + * + * @param Packet Packet obtained with WintunReceivePacket + */ +typedef VOID( + WINAPI WINTUN_RELEASE_RECEIVE_PACKET_FUNC)(_In_ WINTUN_SESSION_HANDLE Session, _In_ const BYTE *Packet); + +/** + * Allocates memory for a packet to send. After the memory is filled with packet data, call WintunSendPacket to send + * and release internal buffer. WintunAllocateSendPacket is thread-safe and the WintunAllocateSendPacket order of + * calls define the packet sending order. + * + * @param Session Wintun session handle obtained with WintunStartSession + * + * @param PacketSize Exact packet size. Must be less or equal to WINTUN_MAX_IP_PACKET_SIZE. + * + * @return Returns pointer to memory where to prepare layer 3 IPv4 or IPv6 packet for sending. If the function fails, + * the return value is NULL. To get extended error information, call GetLastError. Possible errors include the + * following: + * ERROR_HANDLE_EOF Wintun adapter is terminating; + * ERROR_BUFFER_OVERFLOW Wintun buffer is full; + */ +typedef _Must_inspect_result_ +_Return_type_success_(return != NULL) +_Post_maybenull_ +_Post_writable_byte_size_(PacketSize) +BYTE *(WINAPI WINTUN_ALLOCATE_SEND_PACKET_FUNC)(_In_ WINTUN_SESSION_HANDLE Session, _In_ DWORD PacketSize); + +/** + * Sends the packet and releases internal buffer. WintunSendPacket is thread-safe, but the WintunAllocateSendPacket + * order of calls define the packet sending order. This means the packet is not guaranteed to be sent in the + * WintunSendPacket yet. + * + * @param Session Wintun session handle obtained with WintunStartSession + * + * @param Packet Packet obtained with WintunAllocateSendPacket + */ +typedef VOID(WINAPI WINTUN_SEND_PACKET_FUNC)(_In_ WINTUN_SESSION_HANDLE Session, _In_ const BYTE *Packet); + +#pragma warning(pop) + +#ifdef __cplusplus +} +#endif