code: func (h *Handle) getNetNsId(attrType int, val uint32) (int, error) {
  	req := h.newNetlinkRequest(unix.RTM_GETNSID, unix.NLM_F_REQUEST)
  
  	rtgen := nl.NewRtGenMsg()
  	req.AddData(rtgen)
  
  	b := make([]byte, 4, 4)
  	native.PutUint32(b, val)
  	attr := nl.NewRtAttr(attrType, b)
  	req.AddData(attr)
  
  	msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWNSID)
  
  	if err != nil {
  		return 0, err
  	}
  
  	for _, m := range msgs {
  		msg := nl.DeserializeRtGenMsg(m)
  
  		attrs, err := nl.ParseRouteAttr(m[msg.Len():])
  		if err != nil {
  			return 0, err
  		}
  
  		for _, attr := range attrs {
  			switch attr.Attr.Type {
  			case NETNSA_NSID:
  				return int(int32(native.Uint32(attr.Value))), nil
  			}
  		}
  	}
  
  	return 0, fmt.Errorf("unexpected empty result")
  }
docs: // getNetNsId requests the netnsid for a given type-val pair
  // type should be either NETNSA_PID or NETNSA_FD