Compare commits

...

4 Commits

Author SHA1 Message Date
tuna2134
ae301cc618 Add README.md with build instructions and usage details 2026-06-30 12:45:24 +09:00
tuna2134
ebe437161b Implement 'delete' command for interface removal and refactor 'add' command 2026-06-30 12:22:53 +09:00
tuna2134
ff7f594a84 Add test.sh to .gitignore 2026-06-30 11:45:12 +09:00
tuna2134
4c586ed621 Remove test script for etherip-client 2026-06-30 11:45:06 +09:00
8 changed files with 82 additions and 12 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
/etherip-client /etherip-client
/test.sh

28
README.md Normal file
View File

@@ -0,0 +1,28 @@
# etherip-client
[etherip-kmod](https://git.neody.ad.jp/tuna2134/etherip-kmod)のクライアント
## ビルド
```
go build .
```
## 使い方
```
Ethernet over IPv6
Usage:
etherip-client [command]
Available Commands:
add Ethernet over IPv6(RFC3378)カーネルのクライアント
completion Generate the autocompletion script for the specified shell
delete Delete iface
help Help about any command
Flags:
-h, --help help for etherip-client
Use "etherip-client [command] --help" for more information about a command.
```

View File

@@ -15,24 +15,24 @@ var addLocalIP net.IP
var addRemoteIP net.IP var addRemoteIP net.IP
var addLinkName string var addLinkName string
var addCmd = &cobra.Command{ var AddCmd = &cobra.Command{
Use: "add", Use: "add",
Short: "Ethernet over IPv6(RFC3378)カーネルのクライアント", Short: "Ethernet over IPv6(RFC3378)カーネルのクライアント",
RunE: runE, RunE: AddrunE,
} }
func runE(cmd *cobra.Command, args []string) error { func AddrunE(cmd *cobra.Command, args []string) error {
err := utils.AddDev(addDevName, addLocalIP, addRemoteIP, addLinkName) err := utils.AddDev(addDevName, addLocalIP, addRemoteIP, addLinkName)
return err return err
} }
func init() { func init() {
addCmd.Flags().StringVarP(&addDevName, "devname", "d", "eip0", "作成するNICの名") AddCmd.Flags().StringVarP(&addDevName, "devname", "d", "eip0", "作成するNICの名")
addCmd.Flags().IPVarP(&addLocalIP, "local", "l", nil, "自分の終端アドレス") AddCmd.Flags().IPVarP(&addLocalIP, "local", "l", nil, "自分の終端アドレス")
addCmd.Flags().IPVarP(&addRemoteIP, "remote", "r", nil, "相手の終端アドレス") AddCmd.Flags().IPVarP(&addRemoteIP, "remote", "r", nil, "相手の終端アドレス")
addCmd.Flags().StringVarP(&addLinkName, "link", "L", "", "アンダーレイのNIC名") AddCmd.Flags().StringVarP(&addLinkName, "link", "L", "", "アンダーレイのNIC名")
rootCmd.AddCommand(addCmd) rootCmd.AddCommand(AddCmd)
} }

25
cmd/delete.go Normal file
View File

@@ -0,0 +1,25 @@
/*
Copyright © 2026 Masato Kikuchi <m-kikuchi@neody.ad.jp>
*/
package cmd
import (
"git.neody.ad.jp/tuna2134/etherip-client/utils"
"github.com/spf13/cobra"
)
var DelDevVar string
var deleteCmd = &cobra.Command{
Use: "delete",
Short: "Delete iface",
Long: `Delete iface`,
RunE: func(cmd *cobra.Command, args []string) error {
return utils.DelDev(DelDevVar)
},
}
func init() {
deleteCmd.Flags().StringVarP(&DelDevVar, "devname", "d", "eip0", "削除対象のNICの名前")
rootCmd.AddCommand(deleteCmd)
}

View File

@@ -1,16 +1,21 @@
/* /*
Copyright © 2026 Masato Kikuchi <m-kikuchi@neody.ad.jp> Copyright © 2026 Masato Kikuchi <m-kikuchi@neody.ad.jp>
*/ */
package cmd package cmd
import ( import (
"os" "os"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
var rootCmd = &cobra.Command{ var rootCmd = &cobra.Command{
Use: "etherip-client", Use: "etherip-client",
Short: "Ethernet over IPv6(RFC3378)カーネルのクライアント", Short: "EtherIP RFC3378 Client",
Long: `Ethernet over IPv6`,
} }
func Execute() { func Execute() {

View File

@@ -1,5 +1,5 @@
/* /*
Copyright © 2026 Masato Kikuchi <m-kikuchi@neody.ad.jp> Copyright © 2026 NAME HERE <EMAIL ADDRESS>
*/ */
package main package main

View File

@@ -1 +0,0 @@
sudo ./etherip-client add -d eip0 -l 2402:2f60:500:beef:be24:11ff:fe12:d655 -r 2401:5e40:1:462:6709:e050:dcc5:d592 -L ens18

12
utils/delDev.go Normal file
View File

@@ -0,0 +1,12 @@
package utils
import "github.com/vishvananda/netlink"
func DelDev(devname string) error {
link, err := netlink.LinkByName(devname)
if err != nil {
return err
}
netlink.LinkDel(link)
return nil
}