test
This commit is contained in:
parent
69c2837a31
commit
12395bf397
|
@ -5,6 +5,8 @@ import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/google/gopacket/layers"
|
"github.com/google/gopacket/layers"
|
||||||
|
|
||||||
|
@ -12,7 +14,7 @@ import (
|
||||||
gl "github.com/google/gopacket/layers"
|
gl "github.com/google/gopacket/layers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func doDiscover(address string) (map[string]string, error) {
|
func doDiscoverV4(address string) (map[string]string, error) {
|
||||||
|
|
||||||
localAddr, err := net.ResolveUDPAddr("udp", address+":68")
|
localAddr, err := net.ResolveUDPAddr("udp", address+":68")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -22,10 +24,13 @@ func doDiscover(address string) (map[string]string, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer conn.Close()
|
conn.SetDeadline(time.Now().Add(time.Second * 3))
|
||||||
|
defer func() {
|
||||||
|
conn.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
sendDiscover(conn) // broadcast 255.255.255.255:67
|
sendDiscover(conn) // broadcast 255.255.255.255:67
|
||||||
return readOffer(conn) // unicast
|
return readOffer(conn)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +109,15 @@ func readOffer(conn *net.UDPConn) (map[string]string, error) {
|
||||||
offerOptions["ROUTER"] = optDataToIPString(opt.Data)
|
offerOptions["ROUTER"] = optDataToIPString(opt.Data)
|
||||||
break
|
break
|
||||||
case gl.DHCPOptDNS:
|
case gl.DHCPOptDNS:
|
||||||
offerOptions["DNS_SERVER"] = optDataToIPString(opt.Data)
|
cnt := len(opt.Data) / 4
|
||||||
|
var dns []string
|
||||||
|
ipStr := optDataToIPString(opt.Data[0:4])
|
||||||
|
dns = append(dns, ipStr)
|
||||||
|
if cnt > 1 {
|
||||||
|
ipStr := optDataToIPString(opt.Data[4:8])
|
||||||
|
dns = append(dns, ipStr)
|
||||||
|
}
|
||||||
|
offerOptions["DOMAIN_NAME_SERVER"] = strings.Join(dns, ",")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDHCP(t *testing.T) {
|
func TestDHCP(t *testing.T) {
|
||||||
offer, err := doDiscover("192.168.1.203")
|
offer, err := doDiscoverV4("192.168.1.203")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("ERROR : %s", err.Error())
|
t.Errorf("ERROR : %s", err.Error())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user