main.go 920 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main
  2. /*
  3. * Sample DHCPv6 client to test on the local interface
  4. */
  5. import (
  6. "flag"
  7. "log"
  8. "net"
  9. "github.com/insomniacslk/dhcp/dhcpv6"
  10. "github.com/insomniacslk/dhcp/iana"
  11. )
  12. func main() {
  13. flag.Parse()
  14. var macString string
  15. if len(flag.Args()) > 0 {
  16. macString = flag.Arg(0)
  17. } else {
  18. macString = "00:11:22:33:44:55"
  19. }
  20. c := dhcpv6.NewClient()
  21. c.LocalAddr = &net.UDPAddr{
  22. IP: net.ParseIP("::1"),
  23. Port: 546,
  24. }
  25. c.RemoteAddr = &net.UDPAddr{
  26. IP: net.ParseIP("::1"),
  27. Port: 547,
  28. }
  29. log.Printf("%+v", c)
  30. mac, err := net.ParseMAC(macString)
  31. if err != nil {
  32. log.Fatal(err)
  33. }
  34. duid := dhcpv6.Duid{
  35. Type: dhcpv6.DUID_LLT,
  36. HwType: iana.HwTypeEthernet,
  37. Time: dhcpv6.GetTime(),
  38. LinkLayerAddr: mac,
  39. }
  40. conv, err := c.Exchange("lo", nil, dhcpv6.WithClientID(duid))
  41. for _, p := range conv {
  42. log.Print(p.Summary())
  43. }
  44. if err != nil {
  45. log.Fatal(err)
  46. }
  47. }