Changeset View
Changeset View
Standalone View
Standalone View
sys/netlink/netlink_route.c
Show First 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | NLP_LOG(LOG_DEBUG2, nlp, "received msg %s(%d) len %d", cmd->name, | ||||
hdr->nlmsg_type, hdr->nlmsg_len); | hdr->nlmsg_type, hdr->nlmsg_len); | ||||
if (cmd->priv != 0 && !nlp_has_priv(nlp, cmd->priv)) { | if (cmd->priv != 0 && !nlp_has_priv(nlp, cmd->priv)) { | ||||
NLP_LOG(LOG_DEBUG2, nlp, "priv %d check failed for msg %s", cmd->priv, cmd->name); | NLP_LOG(LOG_DEBUG2, nlp, "priv %d check failed for msg %s", cmd->priv, cmd->name); | ||||
return (EPERM); | return (EPERM); | ||||
} else if (cmd->priv != 0) | } else if (cmd->priv != 0) | ||||
NLP_LOG(LOG_DEBUG3, nlp, "priv %d check passed for msg %s", cmd->priv, cmd->name); | NLP_LOG(LOG_DEBUG3, nlp, "priv %d check passed for msg %s", cmd->priv, cmd->name); | ||||
if (!nlp_unconstrained_vnet(nlp) && (cmd->flags & RTNL_F_ALLOW_NONVNET_JAIL) == 0) { | |||||
NLP_LOG(LOG_DEBUG2, nlp, "jail check failed for msg %s", cmd->name); | |||||
return (EPERM); | |||||
} | |||||
bool need_epoch = !(cmd->flags & RTNL_F_NOEPOCH); | bool need_epoch = !(cmd->flags & RTNL_F_NOEPOCH); | ||||
if (need_epoch) | if (need_epoch) | ||||
NET_EPOCH_ENTER(et); | NET_EPOCH_ENTER(et); | ||||
error = cmd->cb(hdr, nlp, npt); | error = cmd->cb(hdr, nlp, npt); | ||||
if (need_epoch) | if (need_epoch) | ||||
NET_EPOCH_EXIT(et); | NET_EPOCH_EXIT(et); | ||||
Show All 36 Lines |