Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "net"
- "fmt"
- "time"
- "crypto/rand"
- "github.com/d2g/dhcp4"
- "github.com/d2g/dhcp4client"
- )
- func RandomMacAddr() (hw net.HardwareAddr, err error) {
- buf := make([]byte, 6)
- _, err = rand.Read(buf)
- if err != nil {
- panic(err)
- }
- buf[0] |= 2
- return net.ParseMAC(fmt.Sprintf("%02X:%02X:%02X:%02X:%02X:%02X", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]))
- }
- func main() {
- m, err := RandomMacAddr()
- if err != nil {
- panic(err)
- }
- conn, err := dhcp4client.NewInetSock()
- if err != nil {
- panic(err)
- }
- defer conn.Close()
- client, err := dhcp4client.New(
- dhcp4client.HardwareAddr(m),
- dhcp4client.Connection(conn),
- dhcp4client.Timeout(time.Second * 30))
- if err != nil {
- panic(err)
- }
- defer client.Close()
- success, packet, err := client.Request()
- if success == true && err == nil {
- options := packet.ParseOptions()
- fmt.Printf("domain name server: %s\n", net.IP(options[dhcp4.OptionDomainNameServer]))
- fmt.Printf("dhcp offer: %v\n\n", options)
- }
- }
Add Comment
Please, Sign In to add comment