Home | History | Annotate | Download | only in qdisc
      1 
      2 /*
      3  * src/lib/ingress.c     	ingress module for CLI lib
      4  *
      5  *	This library is free software; you can redistribute it and/or
      6  *	modify it under the terms of the GNU Lesser General Public
      7  *	License as published by the Free Software Foundation version 2.1
      8  *	of the License.
      9  *
     10  * Copyright (c) 2013 Cong Wang <xiyou.wangcong (at) gmail.com>
     11  */
     12 
     13 #include <netlink/cli/utils.h>
     14 #include <netlink/cli/tc.h>
     15 
     16 static void print_usage(void)
     17 {
     18 	printf(
     19 "Usage: nl-qdisc-add [...] ingress\n"
     20 "\n"
     21 "OPTIONS\n"
     22 "     --help                Show this help text.\n"
     23 "\n"
     24 "EXAMPLE"
     25 "    # Attach ingress to eth1\n"
     26 "    nl-qdisc-add --dev=eth1 --parent=root ingress\n");
     27 }
     28 
     29 static void ingress_parse_argv(struct rtnl_tc *tc, int argc, char **argv)
     30 {
     31 	for (;;) {
     32 		int c, optidx = 0;
     33 		static struct option long_opts[] = {
     34 			{ "help", 0, 0, 'h' },
     35 			{ 0, 0, 0, 0 }
     36 		};
     37 
     38 		c = getopt_long(argc, argv, "h", long_opts, &optidx);
     39 		if (c == -1)
     40 			break;
     41 
     42 		switch (c) {
     43 		case 'h':
     44 			print_usage();
     45 			return;
     46 		}
     47 	}
     48 }
     49 
     50 static struct nl_cli_tc_module ingress_module =
     51 {
     52 	.tm_name		= "ingress",
     53 	.tm_type		= RTNL_TC_TYPE_QDISC,
     54 	.tm_parse_argv		= ingress_parse_argv,
     55 };
     56 
     57 static void __init ingress_init(void)
     58 {
     59 	nl_cli_tc_register(&ingress_module);
     60 }
     61 
     62 static void __exit ingress_exit(void)
     63 {
     64 	nl_cli_tc_unregister(&ingress_module);
     65 }
     66