code: func New(path string) (*Handle, error) {
  	setup()
  
  	n := netns.None()
  	if path != "" {
  		var err error
  		n, err = netns.GetFromPath(path)
  		if err != nil {
  			return nil, err
  		}
  	}
  	defer n.Close()
  
  	sock, err := nl.GetNetlinkSocketAt(n, netns.None(), syscall.NETLINK_GENERIC)
  	if err != nil {
  		return nil, err
  	}
  	// Add operation timeout to avoid deadlocks
  	tv := syscall.NsecToTimeval(netlinkSendSocketTimeout.Nanoseconds())
  	if err := sock.SetSendTimeout(&tv); err != nil {
  		return nil, err
  	}
  	tv = syscall.NsecToTimeval(netlinkRecvSocketsTimeout.Nanoseconds())
  	if err := sock.SetReceiveTimeout(&tv); err != nil {
  		return nil, err
  	}
  
  	return &Handle{sock: sock}, nil
  }
docs: // New provides a new ipvs handle in the namespace pointed to by the
  // passed path. It will return a valid handle or an error in case an
  // error occurred while creating the handle.