code: func New(iface netlink.Link, opts ...ClientOpt) (*Client, error) {
  	c := &Client{
  		iface:   iface,
  		timeout: 10 * time.Second,
  		retry:   3,
  	}
  
  	for _, opt := range opts {
  		if err := opt(c); err != nil {
  			return nil, err
  		}
  	}
  
  	if c.conn == nil {
  		var err error
  		c.conn, err = NewPacketUDPConn(iface.Attrs().Name, ClientPort)
  		if err != nil {
  			return nil, err
  		}
  	}
  	return c, nil
  }
docs: // New creates a new DHCP client that sends and receives packets on the given
  // interface.