I do not see how that helps. mac_entry_age() returns -1 if the entry is
static, and its caller uses mac_entry_age() like this:
if (!mac || mac_entry_age(ml, mac)) {
return true;
}
which means that -1 will cause learning to happen.
On Mon, May 10, 2021 at 07:43:46PM -0400, Vasu Dasari wrote:
> 2. In mac_entry_age(), added new code to protect the age of the static
> entry being overwritten by a received packet.
>
> int
> mac_entry_age(const struct mac_learning *ml, const struct mac_entry *e)
> {- time_t remaining = e->expires - time_now();- return
> ml->idle_time - remaining;+ /* For static fdb entries, expires
> would be initialized with INT_MAX */+ if (INT_MAX == e->expires) {+
> return -1;+ } else {+ time_t remaining = e->expires -
> time_now();+ return ml->idle_time - remaining;+ }
> }
>
>
> Hope this answers your question.
>
> Thanks
> -Vasu
>
> *Vasu Dasari*
>
>
> On Mon, May 10, 2021 at 2:57 PM Ben Pfaff <[email protected]> wrote:
>
> > On Sat, May 08, 2021 at 06:18:41PM -0400, Vasu Dasari wrote:
> > > Currently there is an option to add/flush/show ARP/ND neighbor. This
> > covers L3
> > > side. For L2 side, there is only fdb show command. This patch gives an
> > option
> > > to add/del an fdb entry via CLI.
> > >
> > > CLI command looks like:
> > >
> > > To add:
> > > ovs-appctl fdb/add <bridge> <port> <vlan> <Mac>
> > > ovs-appctl fdb/add br0 p1 0 50:54:00:00:00:05
> > >
> > > To del:
> > > ovs-appctl fdb/del <bridge> <port> <vlan> <Mac>
> > > ovs-appctl fdb/del br0 p1 0 50:54:00:00:00:05
> > >
> > > Static entry should not age. To indicate that entry being programmed is
> > a static entry,
> > > 'expires' field in 'struct mac_entry' will be set to a INT_MAX. A check
> > for this value
> > > is made while deleting mac entry as part of regular aging process.
> > Another check as part
> > > of mac-update process, when a packet with same source mac as this entry
> > arrives on the
> > > configured port will not modify the expires field
> > >
> > > Added two new APIs to provide convinient interfacde to add and delete
> > static-macs
> > > void xlate_add_static_mac_entry(const struct ofproto_dpif *, ofp_port_t
> > in_port,
> > > struct eth_addr dl_src, int vlan);
> > > void xlate_delete_static_mac_entry(const struct ofproto_dpif *,
> > > struct eth_addr dl_src, int vlan);
> > >
> > > Signed-off-by: Vasu Dasari <[email protected]>
> > > Reported-at:
> > https://mail.openvswitch.org/pipermail/ovs-discuss/2019-June/048894.html
> > > Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1597752
> >
> > Needs documentation.
> >
> > I would expect a static entry to be one that couldn't be changed by
> > receiving a packet that causes MAC learning, but I don't see anything
> > that protects from that in here.
> >
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev