code: func GetNetlinkSocketAt(newNs, curNs netns.NsHandle, protocol int) (*NetlinkSocket, error) {
  	c, err := executeInNetns(newNs, curNs)
  	if err != nil {
  		return nil, err
  	}
  	defer c()
  	return getNetlinkSocket(protocol)
  }
docs: // GetNetlinkSocketAt opens a netlink socket in the network namespace newNs
  // and positions the thread back into the network namespace specified by curNs,
  // when done. If curNs is close, the function derives the current namespace and
  // moves back into it when done. If newNs is close, the socket will be opened
  // in the current network namespace.