On 3/19/18 12:05 PM, Roopa Prabhu wrote: > On Mon, Mar 19, 2018 at 10:56 AM, David Ahern <dsah...@gmail.com> wrote: >> On 3/19/18 11:54 AM, Stephen Hemminger wrote: >>> On Mon, 19 Mar 2018 10:20:10 -0700 >>> Roopa Prabhu <ro...@cumulusnetworks.com> wrote: >>> >>>> From: Roopa Prabhu <ro...@cumulusnetworks.com> >>>> >>>> NTF_EXT_LEARNED can be set by a user on bridge fdb entry. >>>> Provide a bridge command option to allow a user to set >>>> NTF_EXT_LEARNED on a bridge fdb entry. >>>> >>>> Signed-off-by: Roopa Prabhu <ro...@cumulusnetworks.com> >>>> --- >>>> bridge/fdb.c | 4 +++- >>>> man/man8/bridge.8 | 8 +++++++- >>>> 2 files changed, 10 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/bridge/fdb.c b/bridge/fdb.c >>>> index 205b4fa..4dbc894 100644 >>>> --- a/bridge/fdb.c >>>> +++ b/bridge/fdb.c >>>> @@ -36,7 +36,7 @@ static void usage(void) >>>> { >>>> fprintf(stderr, >>>> "Usage: bridge fdb { add | append | del | replace } ADDR dev >>>> DEV\n" >>>> - " [ self ] [ master ] [ use ] [ router ]\n" >>>> + " [ self ] [ master ] [ use ] [ router ] [ >>>> extern_learn ]\n" >>>> " [ local | static | dynamic ] [ dst IPADDR ] [ >>>> vlan VID ]\n" >>>> " [ port PORT] [ vni VNI ] [ via DEV ]\n" >>>> " bridge fdb [ show [ br BRDEV ] [ brport DEV ] [ vlan >>>> VID ] [ state STATE ] ]\n"); >>>> @@ -412,6 +412,8 @@ static int fdb_modify(int cmd, int flags, int argc, >>>> char **argv) >>>> vid = atoi(*argv); >>>> } else if (matches(*argv, "use") == 0) { >>>> req.ndm.ndm_flags |= NTF_USE; >>>> + } else if (matches(*argv, "extern_learn") == 0) { >>>> + req.ndm.ndm_flags |= NTF_EXT_LEARNED; >>>> } else { >>>> if (strcmp(*argv, "to") == 0) >>>> NEXT_ARG(); >>>> diff --git a/man/man8/bridge.8 b/man/man8/bridge.8 >>>> index 05512b0..e7f7148 100644 >>>> --- a/man/man8/bridge.8 >>>> +++ b/man/man8/bridge.8 >>>> @@ -61,7 +61,7 @@ bridge \- show / manipulate bridge addresses and devices >>>> .B dev >>>> .IR DEV " { " >>>> .BR local " | " static " | " dynamic " } [ " >>>> -.BR self " ] [ " master " ] [ " router " ] [ " use " ] [ " >>>> +.BR self " ] [ " master " ] [ " router " ] [ " use " ] [ " extern_learn " >>>> ] [ " >>>> .B dst >>>> .IR IPADDR " ] [ " >>>> .B vni >>>> @@ -414,6 +414,12 @@ route shortcircuit enabled. >>>> indicate to the kernel that the fdb entry is in use. >>>> .sp >>>> >>>> +.B extern_learn >>>> +- this entry was learned externally. This option can be used to >>>> +indicate to the kernel that an entry was hardware or user-space >>>> +controller learnt dynamic entry. Kernel will not age such an entry. >>>> +.sp >>>> + >>>> .in -8 >>>> The next command line parameters apply only >>>> when the specified device >>> >>> >>> What about displaying the flag as well? >>> >> >> Also, I believe other commands have converged on 'external' for the keyword. > > > There is already code to display it and it displays it as > 'extern_learn' (hence the choice of extern_learn) > > static void fdb_print_flags(FILE *fp, unsigned int flags) > > { > > .... > > > if (flags & NTF_EXT_LEARNED) > > print_string(PRINT_ANY, NULL, "%s ", "extern_learn"); > > .... > } >
ok. Applied to iproute2-next