netlink: Rename pid to portid to avoid confusion
It is a frequent mistake to confuse the netlink port identifier with a process identifier. Try to reduce this confusion by renaming fields that hold port identifiers portid instead of pid. I have carefully avoided changing the structures exported to userspace to avoid changing the userspace API. I have successfully built an allyesconfig kernel with this change. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Acked-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9f00d9776b
commit
15e473046c
@@ -1185,7 +1185,7 @@ graft:
|
||||
}
|
||||
|
||||
static int tc_fill_qdisc(struct sk_buff *skb, struct Qdisc *q, u32 clid,
|
||||
u32 pid, u32 seq, u16 flags, int event)
|
||||
u32 portid, u32 seq, u16 flags, int event)
|
||||
{
|
||||
struct tcmsg *tcm;
|
||||
struct nlmsghdr *nlh;
|
||||
@@ -1193,7 +1193,7 @@ static int tc_fill_qdisc(struct sk_buff *skb, struct Qdisc *q, u32 clid,
|
||||
struct gnet_dump d;
|
||||
struct qdisc_size_table *stab;
|
||||
|
||||
nlh = nlmsg_put(skb, pid, seq, event, sizeof(*tcm), flags);
|
||||
nlh = nlmsg_put(skb, portid, seq, event, sizeof(*tcm), flags);
|
||||
if (!nlh)
|
||||
goto out_nlmsg_trim;
|
||||
tcm = nlmsg_data(nlh);
|
||||
@@ -1248,25 +1248,25 @@ static int qdisc_notify(struct net *net, struct sk_buff *oskb,
|
||||
struct Qdisc *old, struct Qdisc *new)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
u32 pid = oskb ? NETLINK_CB(oskb).pid : 0;
|
||||
u32 portid = oskb ? NETLINK_CB(oskb).portid : 0;
|
||||
|
||||
skb = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);
|
||||
if (!skb)
|
||||
return -ENOBUFS;
|
||||
|
||||
if (old && !tc_qdisc_dump_ignore(old)) {
|
||||
if (tc_fill_qdisc(skb, old, clid, pid, n->nlmsg_seq,
|
||||
if (tc_fill_qdisc(skb, old, clid, portid, n->nlmsg_seq,
|
||||
0, RTM_DELQDISC) < 0)
|
||||
goto err_out;
|
||||
}
|
||||
if (new && !tc_qdisc_dump_ignore(new)) {
|
||||
if (tc_fill_qdisc(skb, new, clid, pid, n->nlmsg_seq,
|
||||
if (tc_fill_qdisc(skb, new, clid, portid, n->nlmsg_seq,
|
||||
old ? NLM_F_REPLACE : 0, RTM_NEWQDISC) < 0)
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
if (skb->len)
|
||||
return rtnetlink_send(skb, net, pid, RTNLGRP_TC,
|
||||
return rtnetlink_send(skb, net, portid, RTNLGRP_TC,
|
||||
n->nlmsg_flags & NLM_F_ECHO);
|
||||
|
||||
err_out:
|
||||
@@ -1289,7 +1289,7 @@ static int tc_dump_qdisc_root(struct Qdisc *root, struct sk_buff *skb,
|
||||
q_idx++;
|
||||
} else {
|
||||
if (!tc_qdisc_dump_ignore(q) &&
|
||||
tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).pid,
|
||||
tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).portid,
|
||||
cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWQDISC) <= 0)
|
||||
goto done;
|
||||
q_idx++;
|
||||
@@ -1300,7 +1300,7 @@ static int tc_dump_qdisc_root(struct Qdisc *root, struct sk_buff *skb,
|
||||
continue;
|
||||
}
|
||||
if (!tc_qdisc_dump_ignore(q) &&
|
||||
tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).pid,
|
||||
tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).portid,
|
||||
cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWQDISC) <= 0)
|
||||
goto done;
|
||||
q_idx++;
|
||||
@@ -1375,7 +1375,7 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
||||
const struct Qdisc_class_ops *cops;
|
||||
unsigned long cl = 0;
|
||||
unsigned long new_cl;
|
||||
u32 pid = tcm->tcm_parent;
|
||||
u32 portid = tcm->tcm_parent;
|
||||
u32 clid = tcm->tcm_handle;
|
||||
u32 qid = TC_H_MAJ(clid);
|
||||
int err;
|
||||
@@ -1403,8 +1403,8 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
||||
|
||||
/* Step 1. Determine qdisc handle X:0 */
|
||||
|
||||
if (pid != TC_H_ROOT) {
|
||||
u32 qid1 = TC_H_MAJ(pid);
|
||||
if (portid != TC_H_ROOT) {
|
||||
u32 qid1 = TC_H_MAJ(portid);
|
||||
|
||||
if (qid && qid1) {
|
||||
/* If both majors are known, they must be identical. */
|
||||
@@ -1418,10 +1418,10 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
||||
/* Now qid is genuine qdisc handle consistent
|
||||
* both with parent and child.
|
||||
*
|
||||
* TC_H_MAJ(pid) still may be unspecified, complete it now.
|
||||
* TC_H_MAJ(portid) still may be unspecified, complete it now.
|
||||
*/
|
||||
if (pid)
|
||||
pid = TC_H_MAKE(qid, pid);
|
||||
if (portid)
|
||||
portid = TC_H_MAKE(qid, portid);
|
||||
} else {
|
||||
if (qid == 0)
|
||||
qid = dev->qdisc->handle;
|
||||
@@ -1439,7 +1439,7 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
||||
|
||||
/* Now try to get class */
|
||||
if (clid == 0) {
|
||||
if (pid == TC_H_ROOT)
|
||||
if (portid == TC_H_ROOT)
|
||||
clid = qid;
|
||||
} else
|
||||
clid = TC_H_MAKE(qid, clid);
|
||||
@@ -1478,7 +1478,7 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
|
||||
new_cl = cl;
|
||||
err = -EOPNOTSUPP;
|
||||
if (cops->change)
|
||||
err = cops->change(q, clid, pid, tca, &new_cl);
|
||||
err = cops->change(q, clid, portid, tca, &new_cl);
|
||||
if (err == 0)
|
||||
tclass_notify(net, skb, n, q, new_cl, RTM_NEWTCLASS);
|
||||
|
||||
@@ -1492,7 +1492,7 @@ out:
|
||||
|
||||
static int tc_fill_tclass(struct sk_buff *skb, struct Qdisc *q,
|
||||
unsigned long cl,
|
||||
u32 pid, u32 seq, u16 flags, int event)
|
||||
u32 portid, u32 seq, u16 flags, int event)
|
||||
{
|
||||
struct tcmsg *tcm;
|
||||
struct nlmsghdr *nlh;
|
||||
@@ -1500,7 +1500,7 @@ static int tc_fill_tclass(struct sk_buff *skb, struct Qdisc *q,
|
||||
struct gnet_dump d;
|
||||
const struct Qdisc_class_ops *cl_ops = q->ops->cl_ops;
|
||||
|
||||
nlh = nlmsg_put(skb, pid, seq, event, sizeof(*tcm), flags);
|
||||
nlh = nlmsg_put(skb, portid, seq, event, sizeof(*tcm), flags);
|
||||
if (!nlh)
|
||||
goto out_nlmsg_trim;
|
||||
tcm = nlmsg_data(nlh);
|
||||
@@ -1540,18 +1540,18 @@ static int tclass_notify(struct net *net, struct sk_buff *oskb,
|
||||
unsigned long cl, int event)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
u32 pid = oskb ? NETLINK_CB(oskb).pid : 0;
|
||||
u32 portid = oskb ? NETLINK_CB(oskb).portid : 0;
|
||||
|
||||
skb = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);
|
||||
if (!skb)
|
||||
return -ENOBUFS;
|
||||
|
||||
if (tc_fill_tclass(skb, q, cl, pid, n->nlmsg_seq, 0, event) < 0) {
|
||||
if (tc_fill_tclass(skb, q, cl, portid, n->nlmsg_seq, 0, event) < 0) {
|
||||
kfree_skb(skb);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return rtnetlink_send(skb, net, pid, RTNLGRP_TC,
|
||||
return rtnetlink_send(skb, net, portid, RTNLGRP_TC,
|
||||
n->nlmsg_flags & NLM_F_ECHO);
|
||||
}
|
||||
|
||||
@@ -1565,7 +1565,7 @@ static int qdisc_class_dump(struct Qdisc *q, unsigned long cl, struct qdisc_walk
|
||||
{
|
||||
struct qdisc_dump_args *a = (struct qdisc_dump_args *)arg;
|
||||
|
||||
return tc_fill_tclass(a->skb, q, cl, NETLINK_CB(a->cb->skb).pid,
|
||||
return tc_fill_tclass(a->skb, q, cl, NETLINK_CB(a->cb->skb).portid,
|
||||
a->cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWTCLASS);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user