code: def nl_syserr2nlerr(error_):
      
      error_ = abs(error_)
      legend = {
          errno.EBADF: libnl.errno_.NLE_BAD_SOCK,
          errno.EADDRINUSE: libnl.errno_.NLE_EXIST,
          errno.EEXIST: libnl.errno_.NLE_EXIST,
          errno.EADDRNOTAVAIL: libnl.errno_.NLE_NOADDR,
          errno.ESRCH: libnl.errno_.NLE_OBJ_NOTFOUND,
          errno.ENOENT: libnl.errno_.NLE_OBJ_NOTFOUND,
          errno.EINTR: libnl.errno_.NLE_INTR,
          errno.EAGAIN: libnl.errno_.NLE_AGAIN,
          errno.ENOTSOCK: libnl.errno_.NLE_BAD_SOCK,
          errno.ENOPROTOOPT: libnl.errno_.NLE_INVAL,
          errno.EFAULT: libnl.errno_.NLE_INVAL,
          errno.EACCES: libnl.errno_.NLE_NOACCESS,
          errno.EINVAL: libnl.errno_.NLE_INVAL,
          errno.ENOBUFS: libnl.errno_.NLE_NOMEM,
          errno.ENOMEM: libnl.errno_.NLE_NOMEM,
          errno.EAFNOSUPPORT: libnl.errno_.NLE_AF_NOSUPPORT,
          errno.EPROTONOSUPPORT: libnl.errno_.NLE_PROTO_MISMATCH,
          errno.EOPNOTSUPP: libnl.errno_.NLE_OPNOTSUPP,
          errno.EPERM: libnl.errno_.NLE_PERM,
          errno.EBUSY: libnl.errno_.NLE_BUSY,
          errno.ERANGE: libnl.errno_.NLE_RANGE,
          errno.ENODEV: libnl.errno_.NLE_NODEV,
      }
      return int(legend.get(error_, libnl.errno_.NLE_FAILURE))
docs: https://github.com/thom311/libnl/blob/libnl3_2_25/lib/error.c#L84.