main.go 1.0 KB

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