code: func NewRawClient(ifi *net.Interface) (*RawClient, error) {
  	// Open raw socket to send Wake-on-LAN magic packets
  	var cfg raw.Config
  
  	p, err := raw.ListenPacket(ifi, 0x0806, &cfg)
  	if err != nil {
  		return nil, err
  	}
  
  	return &RawClient{
  		ifi: ifi,
  		p:   p,
  	}, nil
  }
docs: // NewRawClient creates a new RawClient using the specified network interface.
  //
  // Note that raw sockets typically require elevated user privileges, such as
  // the 'root' user on Linux, or the 'SET_CAP_RAW' capability.
  //
  // For this reason, it is typically recommended to use the regular Client type
  // instead, which operates over UDP.