@@ -72,6 +72,7 @@ static const struct option longopts[] = {
7272 {"no_kernel" , no_argument , NULL , 'n' },
7373 {"skip_runas" , no_argument , NULL , 'S' },
7474 {"ecmp" , required_argument , NULL , 'e' },
75+ {"int_num" , required_argument , NULL , 'I' },
7576 {0 }};
7677
7778/* signal definitions */
@@ -333,16 +334,18 @@ int main(int argc, char **argv)
333334 char * bgp_address = NULL ;
334335 int no_fib_flag = 0 ;
335336 int skip_runas = 0 ;
337+ int instance = 0 ;
336338
337339 frr_preinit (& bgpd_di , argc , argv );
338340 frr_opt_add (
339- "p:l:rSne:" , longopts ,
341+ "p:l:rSne:I: " , longopts ,
340342 " -p, --bgp_port Set BGP listen port number (0 means do not listen).\n"
341343 " -l, --listenon Listen on specified address (implies -n)\n"
342344 " -r, --retain When program terminates, retain added route by bgpd.\n"
343345 " -n, --no_kernel Do not install route to kernel.\n"
344346 " -S, --skip_runas Skip capabilities checks, and changing user and group IDs.\n"
345- " -e, --ecmp Specify ECMP to use.\n" );
347+ " -e, --ecmp Specify ECMP to use.\n"
348+ " -I, --int_num Set instance number (label-manager)\n" );
346349
347350 /* Command line argument treatment. */
348351 while (1 ) {
@@ -384,6 +387,12 @@ int main(int argc, char **argv)
384387 case 'S' :
385388 skip_runas = 1 ;
386389 break ;
390+ case 'I' :
391+ instance = atoi (optarg );
392+ if (instance > (unsigned short )-1 )
393+ zlog_err ("Instance %i out of range (0..%u)" ,
394+ instance , (unsigned short )-1 );
395+ break ;
387396 default :
388397 frr_help_exit (1 );
389398 break ;
@@ -405,7 +414,7 @@ int main(int argc, char **argv)
405414 bgp_vrf_init ();
406415
407416 /* BGP related initialization. */
408- bgp_init ();
417+ bgp_init (( unsigned short ) instance );
409418
410419 snprintf (bgpd_di .startinfo , sizeof (bgpd_di .startinfo ), ", bgp@%s:%d" ,
411420 (bm -> address ? bm -> address : "<all>" ), bm -> port );
0 commit comments