code: func (c *Client) Reply(req *Packet, hwAddr net.HardwareAddr, ip net.IP) error {
  	p, err := NewPacket(OperationReply, hwAddr, ip, req.SenderHardwareAddr, req.SenderIP)
  	if err != nil {
  		return err
  	}
  	return c.WriteTo(p, req.SenderHardwareAddr)
  }
docs: // Reply constructs and sends a reply to an ARP request. On the ARP
  // layer, it will be addressed to the sender address of the packet. On
  // the ethernet layer, it will be sent to the actual remote address
  // from which the request was received.
  //
  // For more fine-grained control, use WriteTo to write a custom
  // response.