simplify setting up the network connection

This commit is contained in:
Johannes Kimmel 2021-12-14 15:23:45 +01:00
parent 3983700788
commit f45a5665cf
2 changed files with 17 additions and 7 deletions

View File

@ -28,16 +28,11 @@ func parseOpts() (options, error) {
}
func run(opt options) error {
conn, err := packet.ListenPort(opt.Port)
conn, err := packet.Listen(opt.Group, opt.Port, opt.Ifs...)
if err != nil {
return err
}
defer conn.Close()
for _, iface := range opt.Ifs {
if err = conn.JoinGroup(iface, opt.Group); err != nil {
return err
}
}
buf := [4096]byte{}
var s tlv.PacketDecoder

View File

@ -18,6 +18,19 @@ type Conn struct {
v6pc *ipv6.PacketConn
}
func Listen(group string, port uint16, ifaces ...string) (Conn, error) {
conn, err := ListenPort(port)
if err != nil {
return Conn{}, err
}
for _, iface := range ifaces {
if err = conn.JoinGroup(iface, group); err != nil {
conn.Close()
return Conn{}, err
}
}
return conn, nil
}
func ListenPort(port uint16) (Conn, error) {
var c Conn
@ -27,7 +40,9 @@ func ListenPort(port uint16) (Conn, error) {
}
c.v6pc = ipv6.NewPacketConn(uc)
return c, c.v6pc.SetControlMessage(ipv6.FlagDst, true)
return c, c.v6pc.SetControlMessage(
ipv6.FlagDst|ipv6.FlagTrafficClass|ipv6.FlagHopLimit|ipv6.FlagPathMTU,
true)
}
func (c Conn) Close() error {