Guest User

Untitled

a guest
Nov 18th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "net"
  5. "fmt"
  6. "time"
  7. "crypto/rand"
  8. "github.com/d2g/dhcp4"
  9. "github.com/d2g/dhcp4client"
  10. )
  11.  
  12. func RandomMacAddr() (hw net.HardwareAddr, err error) {
  13. buf := make([]byte, 6)
  14. _, err = rand.Read(buf)
  15. if err != nil {
  16. panic(err)
  17. }
  18. buf[0] |= 2
  19.  
  20. return net.ParseMAC(fmt.Sprintf("%02X:%02X:%02X:%02X:%02X:%02X", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]))
  21. }
  22.  
  23. func main() {
  24. m, err := RandomMacAddr()
  25. if err != nil {
  26. panic(err)
  27. }
  28.  
  29. conn, err := dhcp4client.NewInetSock()
  30. if err != nil {
  31. panic(err)
  32. }
  33.  
  34. defer conn.Close()
  35.  
  36. client, err := dhcp4client.New(
  37. dhcp4client.HardwareAddr(m),
  38. dhcp4client.Connection(conn),
  39. dhcp4client.Timeout(time.Second * 30))
  40.  
  41. if err != nil {
  42. panic(err)
  43. }
  44.  
  45. defer client.Close()
  46.  
  47. success, packet, err := client.Request()
  48. if success == true && err == nil {
  49. options := packet.ParseOptions()
  50. fmt.Printf("domain name server: %s\n", net.IP(options[dhcp4.OptionDomainNameServer]))
  51. fmt.Printf("dhcp offer: %v\n\n", options)
  52. }
  53. }
Add Comment
Please, Sign In to add comment