Cong Wang <xiyou.wangc...@gmail.com> writes: > On Mon, Oct 30, 2017 at 2:17 PM, Roman Mashak <m...@mojatatu.com> wrote: >> Cong Wang <xiyou.wangc...@gmail.com> writes: >> >>> On Mon, Oct 30, 2017 at 11:07 AM, Roman Mashak <m...@mojatatu.com> wrote: >>>> 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: >>>>> >>>>> 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. >>> >>> Is there any reason we can't use RTM_NEWQDISC+RTM_DELQDISC >>> rather than NLM_F_REPLACE to determine it is replacement? >>> >> >> I'm not sure this would be valid semantics for replace operation, look at >> the rfc3549: >> >> Additional flag bits for NEW requests >> NLM_F_REPLACE Replace existing matching config object with >> this request. >> > > I am not saying NLM_F_REPLACE is not correct, I am saying the > RTM_NEWQDISC+RTM_DELQDISC in a same message probably > exists for a reason. > > >>> Note, RTM_NEWQDISC+RTM_DELQDISC are put in a same >>> message not two. >> >> Hmm, could you clarify how do you expect to put two event IDs in nlmsg_type? > > Looking at qdisc_notify(), it is essentially two skb_put() on a same > skb, right? So two nlmsghdr in one skb? Or I read it wrong?
So there will be two netlink messages in a single skb, and the user receives two events. But apparently this only happens when a new _egress_ qdisc is being added and the default egress qdisc is deleted.