summaryrefslogtreecommitdiff
path: root/pkg/server/socket
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/server/socket')
-rw-r--r--pkg/server/socket/defer.go4
-rw-r--r--pkg/server/socket/dial.go2
-rw-r--r--pkg/server/socket/listen.go2
-rw-r--r--pkg/server/socket/loop.go2
-rw-r--r--pkg/server/socket/proxy.go2
-rw-r--r--pkg/server/socket/socket.go31
-rw-r--r--pkg/server/socket/tun.go2
7 files changed, 33 insertions, 12 deletions
diff --git a/pkg/server/socket/defer.go b/pkg/server/socket/defer.go
index 7c1436e..d63d51e 100644
--- a/pkg/server/socket/defer.go
+++ b/pkg/server/socket/defer.go
@@ -6,7 +6,7 @@ import (
)
type deferSocket struct {
- dialSocket `opts:"inline"`
+ dialSocket
}
type deferConn struct {
@@ -76,5 +76,5 @@ func (c *deferConn) Close() (err error) {
}
func init() {
- register("defer", deferSocket{})
+ register("defer", "deferred 'dial' after first sending", deferSocket{})
}
diff --git a/pkg/server/socket/dial.go b/pkg/server/socket/dial.go
index b2df3b7..a31e192 100644
--- a/pkg/server/socket/dial.go
+++ b/pkg/server/socket/dial.go
@@ -40,5 +40,5 @@ func (s *dialSocket) Close() {
}
func init() {
- register("dial", dialSocket{})
+ register("dial", "connect to the network address", dialSocket{})
}
diff --git a/pkg/server/socket/listen.go b/pkg/server/socket/listen.go
index 2c2f184..9d19677 100644
--- a/pkg/server/socket/listen.go
+++ b/pkg/server/socket/listen.go
@@ -96,5 +96,5 @@ func (s *listenSocket) Close() {
}
func init() {
- register("listen", listenSocket{})
+ register("listen", "accept connections on the local network address", listenSocket{})
}
diff --git a/pkg/server/socket/loop.go b/pkg/server/socket/loop.go
index c442140..1c45067 100644
--- a/pkg/server/socket/loop.go
+++ b/pkg/server/socket/loop.go
@@ -42,5 +42,5 @@ func (s *loopSocket) Close() {
}
func init() {
- register("loop", loopSocket{})
+ register("loop", "send data back", loopSocket{})
}
diff --git a/pkg/server/socket/proxy.go b/pkg/server/socket/proxy.go
index 1be4bba..c46d1c1 100644
--- a/pkg/server/socket/proxy.go
+++ b/pkg/server/socket/proxy.go
@@ -137,5 +137,5 @@ func (s *proxyServer) Close() (err error) {
}
func init() {
- register("proxy", proxySocket{})
+ register("proxy", "http connect proxy server", proxySocket{})
}
diff --git a/pkg/server/socket/socket.go b/pkg/server/socket/socket.go
index 03b73d9..ea35be3 100644
--- a/pkg/server/socket/socket.go
+++ b/pkg/server/socket/socket.go
@@ -72,12 +72,12 @@ func (c *conn) Close() error {
func New(desc string, e env.Env) (S, error) {
name, opts := opts.Parse(desc)
- t, ok := sockets[name]
+ sockType, ok := sockets[name]
if !ok {
return nil, fmt.Errorf("%s: unknown type", name)
}
- s := reflect.New(t).Interface()
+ s := reflect.New(sockType.t).Interface()
if err := opts.Configure(s); err != nil {
return nil, fmt.Errorf("%s: %w", name, err)
}
@@ -101,9 +101,18 @@ func parseProtoAddr(proto, addr string) (string, string) {
return proto, addr
}
-var sockets = map[string]reflect.Type{}
+type Type struct {
+ Desc string
+ Name string
-func register(name string, i interface{}) {
+ Param []opts.Param
+
+ t reflect.Type
+}
+
+var sockets = map[string]*Type{}
+
+func register(name string, desc string, i interface{}) {
t := reflect.TypeOf(i)
if t.Kind() != reflect.Struct {
log.Panicf("non-struct type '%s'", t.String())
@@ -114,7 +123,15 @@ func register(name string, i interface{}) {
if _, ok := sockets[name]; ok {
log.Panicf("duplicate socket name '%s'", name)
}
- sockets[name] = t
+
+ sockets[name] = &Type{
+ Desc: desc,
+ Name: name,
+
+ Param: opts.Parametrize(t),
+
+ t: t,
+ }
}
func GetList() []string {
@@ -128,3 +145,7 @@ func GetList() []string {
return list
}
+
+func GetType(name string) *Type {
+ return sockets[name]
+}
diff --git a/pkg/server/socket/tun.go b/pkg/server/socket/tun.go
index 3e673eb..61a30f0 100644
--- a/pkg/server/socket/tun.go
+++ b/pkg/server/socket/tun.go
@@ -122,5 +122,5 @@ func (c *tunConn) Close() error {
}
func init() {
- register("tun", tunSocket{})
+ register("tun", "tun device", tunSocket{})
}