Le 15/04/2017 à 06:26, David Ahern a écrit : > +Nicolas > > On 4/14/17 7:51 PM, Vlad Yasevich wrote: >> On 04/10/2017 11:49 AM, David Ahern wrote: >>> On 4/10/17 9:39 AM, Vlad Yasevich wrote: >>>> OK, so this will work for the events that are generated as a result of >>>> device state change >>>> (like mtu, address, and others). >>>> >>>> However, the original event data may be needed for other events that may be >>>> of use to userspace like NETDEV_NOTIFY_PEERS and NETDEV_RESEND_IGMP >>>> (possibly others...) >>> >>> sure. My objection is to multiple messages with identical content. >>> >>> I think the rtnetlink_event message is unique for those 2 netdev events, >>> so no objections if it has value. >>> >> >> So, I've been looking at adding a bitmap and collecting all modification, >> however >> I ran into an interesting issue in do_setlink. >> >> Currently the notifications from do_setlink() don't appear to work as one >> would >> expect and it's somewhat confusing upon deeper inspection. >> >> We have 2 values DO_SETLINK_MODIFIED (1) and DO_SETLINK_NOTIFY (3). These 2 >> 'attempt' >> to do different jobs, but really fail at it. The function will generate >> notifications >> regardless of which of the above values is used. >> >> Those changes were done in commit ba9989069f4e426b1e0ed7018eacc9e1ba607095 >> (cc Nicolas >> just in case he remembers the history) >> >> I am not sure which changes should really trigger a call >> netdev_state_change(), thus this >> message. Right now, all changes done in this function trigger them. If >> that's how that >> should function, that I can simplify the code. If not, then some of the >> changes may >> require us to export the event to the user. If I remember well, the goal was to trigger a netlink event as soon as 'something' changed. It was not the case before that patch, some updates (I don't remember which one) were not advertised via netlink.
>> >> To use the dreaded NETDEV_CHANGEMTU event as an example, we used to generate >> 3 messages >> (PRECHANGEMTU, CHANGEMTU, and a message from netdev_state_change). With >> recent changes, >> we now only generate a message from netdev_state_change. However, mtu >> change is tagged >> with DO_SETLINK_MODIFIED which doesn't include the notify bit. So, should >> there be a >> NETDEV_CHANGE event associated with this change and a rtnl message (as it is >> now) or not? The rtnl msg is mandatory. Regards, Nicolas