Cong Wang <xiyou.wangc...@gmail.com> writes: > On Sat, Oct 28, 2017 at 8:36 PM, Roman Mashak <m...@mojatatu.com> wrote: >> Cong Wang <xiyou.wangc...@gmail.com> writes: >> >>> On Thu, Oct 26, 2017 at 2:40 PM, Roman Mashak <m...@mojatatu.com> wrote: >>>> Userland client should be able to read an event, and reflect it back to >>>> the kernel, therefore it needs to extract complete set of netlink flags. >>>> >>>> For example, this will allow "tc monitor" to distinguish Add and Replace >>>> qdisc operations. >>>> >>>> Signed-off-by: Roman Mashak <m...@mojatatu.com> >>>> --- >>>> net/sched/sch_api.c | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c >>>> index a9ac912..e3e29be 100644 >>>> --- a/net/sched/sch_api.c >>>> +++ b/net/sched/sch_api.c >>>> @@ -859,7 +859,7 @@ static int qdisc_notify(struct net *net, struct >>>> sk_buff *oskb, >>>> } >>>> if (new && !tc_qdisc_dump_ignore(new, false)) { >>>> if (tc_fill_qdisc(skb, new, clid, portid, n->nlmsg_seq, >>>> - old ? NLM_F_REPLACE : 0, RTM_NEWQDISC) < >>>> 0) >>>> + n->nlmsg_flags, RTM_NEWQDISC) < 0) >>> >>> >>> Don't you want to change the other tc_fill_qdisc() in the same function >>> too? ;) >> >> The other tc_fill_qdisc generates RTM_DELQDISC event, in that case >> netlink flags for user don't matter. > > Hmm, I thought you use RTM_NEWQDISC+RTM_DELQDISC to > determine it is replacement, no?
Create is RTM_NEWQDISC and NLM_F_EXCL|NLM_F_CREATE, replacement is RTM_NEWQDISC and NLM_F_REPLACE in netlink flags.