📄 main.c
字号:
sty_puts(sty, "Off\n");#endif break; } return 1; /* restart the command scanner */}/* * Dump the routing table, for SNMP-challenged test environments. */static void dump_routes_1(struct route_tree *rt, void *cookie){ struct sty *sty = cookie; route_entry_t *r = rt->rte; char dest[16], mask[16], gw[16]; inaddr_t mask_in; ipaddr_t mask_ip; while (r) { /* don't try to display v6 routes (yet?) */ if (GET_IPADDR_TYPE(PTR_RTE_ENTRY_ADDR(r)) != IPV4) return; ipaddr_to_string(PTR_RTE_ENTRY_ADDR(r), dest, sizeof(dest)); ipaddr_to_string(PTR_RTE_ENTRY_ADDR(r), gw, sizeof(gw)); mask_in = PFXLEN_TO_IPV4_MASK(GET_RTE_ENTRY_PFXLEN(r)); SET_IPV4_IPADDR(&mask_ip, &mask_in); ipaddr_to_string(&mask_ip, mask, sizeof(mask)); sty_printf(sty, "%15s %15s %15s %6s %6s %2x %3u %3u %2x\n", dest, mask, gw, (!r->net ? "" : r->net->s_name ? r->net->s_name : "???"), (!r->owner ? "" : r->owner->name ? r->owner->name : "???"), r->tos, r->priority, r->tag, (r->rte_flags | (bits16_t) r->rte_type)); r = r->link; }}static boolean_t cmd_add_route (struct sty *sty, enum help_level help, int argc, char **argv){ ipaddr_t addr, nhaddr; bits8_t pfxlen, pref, type, tos, tag; bits32_t metric; net_if *nhif; int rc; switch (help) { case help_short: sty_puts(sty, "add-route add a route to the routing table\n"); return(1); case help_long: sty_puts(sty, "\The \"add-route\" command adds a new route to the Attache routing table.\nUsage:\nadd-route <dstip> <pfxlen> <nhip> <if> <metric> <pref> <type> <tos> [tag]\n"); return(1); case help_none: break; } if ((argc < 9) || (argc > 10)) { sty_printf (sty, "Wrong number of arguments. Usage:\nadd-route <dstip> <pfxlen> <nhip> <if> <metric> <pref> <type> <tos> [tag]\n"); return 1; } string_to_ipaddr (argv [1], &addr); if (GET_IPADDR_TYPE(&addr) == IPNONE) { sty_printf (sty, "Bad IP address format in 'addr' parameter\n"); return 1; } pfxlen = (bits8_t) atoi (argv [2]); string_to_ipaddr (argv [3], &nhaddr); if (GET_IPADDR_TYPE(&nhaddr) == IPNONE) { sty_printf (sty, "Bad IP address format in 'nhaddr' parameter\n"); return 1; } if ((nhif = if_lookup(argv[4])) == 0) { sty_printf (sty, "Unknown interface, %s\n.", argv[4]); return(1); } metric = (bits32_t) atoi (argv [5]); pref = (bits8_t) atoi (argv [6]); if ((STRCMP(argv[7], "RF_INDIRECT") == 0) || (STRCMP(argv[7], "RF_REMOTE") == 0)) type = RF_INDIRECT; else if ((STRCMP(argv[7], "RF_DIRECT") == 0) || (STRCMP(argv[7], "RF_LOCAL") == 0)) type = RF_DIRECT; else if (STRCMP(argv[7], "RF_BROADCAST") == 0) type = RF_BROADCAST; else if (STRCMP(argv[7], "RF_MULTICAST") == 0) type = RF_MULTICAST; else if ((STRCMP(argv[7], "RF_MARTIAN") == 0) || (STRCMP(argv[7], "RF_REJECT") == 0)) type = RF_MARTIAN; else { sty_printf(sty, "Bad route type, %s.\n", argv[7]); return(1); } tos = (bits8_t) atoi (argv [8]); if (argc == 10) tag = (bits8_t) atoi (argv [9]); else tag = static_routes_owner.default_tag; if (route_add(&addr, pfxlen, &nhaddr, nhif, metric, pref, type, tos, tag, 0, &static_routes_owner, (route_ext_t *)0, &rc) == RTE_NULL) { sty_printf (sty, "Route creations failed, rc = %d\n", rc); return(1); } sty_printf (sty, "New route added successfully.\n"); return(1);}static boolean_t cmd_delete_route (struct sty *sty, enum help_level help, int argc, char **argv){ ipaddr_t addr; bits8_t pfxlen, tag; int rc; switch (help) { case help_short: sty_puts(sty, "delete-route delete a route from the routing table\n"); return(1); case help_long: sty_puts(sty, "\The \"delete-route\" command deletes a route from the Attache routing table.\nUsage:\ndelete-route <dstip> <pfxlen> <tag>\n"); return(1); case help_none: break; } if (argc != 4) { sty_printf (sty, "Wrong number of arguments. Usage:\ndelete-route <dstip> <pfxlen> <tag>\n"); return 1; } string_to_ipaddr (argv [1], &addr); if (GET_IPADDR_TYPE(&addr) == IPNONE) { sty_printf (sty, "Bad IP address format in 'addr' parameter\n"); return 1; } pfxlen = (bits8_t) atoi (argv [2]); tag = (bits8_t) atoi (argv [3]); if ((rc = route_delete(&addr, pfxlen, tag)) != RTE_ERR_NONE) { sty_printf (sty, "Route deleteion failed, rc = %d\n", rc); return(1); } sty_printf (sty, "Route deleted successfully.\n"); return(1);}boolean_t cmd_dump_routes (struct sty *sty, enum help_level help, int argc, char **argv){ switch (help) { case help_short: sty_puts(sty, "dump-routes print contents of routing table(s)\n"); break; case help_long: sty_puts(sty, "\The \"dump_routes\" command prints out the current contents of the\n\Attache routing table.\n"); break; case help_none: sty_puts(sty, "IPv4 Routing Table:\n\ Dest Mask Gw Net Owner TOS Pri Tag Fl\n\---------------------------------------------------------------------------\n\"); route_function_iterate(dump_routes_1, sty);#if INSTALL_ATTACHE_IPV6 printf("\n\nIPv6 Routing Table:\n"); if (avl_print(ipv6_routing_table) != 0) { printf("AVL Printing Function NOT Available.\n"); printf("Compile attache/net/avltree.c and ip_rte.c with PRINTF defined.\n"); }#endif break; } return 1; /* restart the command scanner */}#if (INSTALL_ATTACHE_IPV4_ROUTER_DISCOVERY && \ (!INSTALL_ATTACHE_IP_FORWARDING))static boolean_t cmd_dump_rdcache (struct sty *sty, enum help_level help, int argc, char **argv){ switch (help) { case help_short: sty_puts(sty, "dump-rdcache print contents of Router Discovery cache\n"); break; case help_long: sty_puts(sty, "\The \"dump_rdcache\" command prints out the current contents of the\n\IPv4 Router Discovery cache.\n"); break; case help_none: if (router_cache_print(ipv4_rd_cache) != 0) { printf("RD Cache Printing Function NOT Available.\n"); printf("Compile attache/net/ip4_rd.c with PRINTF defined.\n"); } break; } return 1; /* restart the command scanner */}#endif#if INSTALL_ATTACHE_IPV6static boolean_t cmd_dump_v6_globals (struct sty *sty, enum help_level help, int argc, char **argv){ switch (help) { case help_none: v6_print_globals(); break; case help_short: sty_puts(sty, "dump-v6-globals print out v6 global information\n"); break; case help_long: sty_puts(sty, "\print out v6 global information\n"); break; } return 1;}static boolean_t cmd_dump_v6_nd (struct sty *sty, enum help_level help, int argc, char **argv){ switch (help) { case help_none: v6_print_nd_cache(); break; case help_short: sty_puts(sty, "dump-v6-nd print out entries in v6 nd cache\n"); break; case help_long: sty_puts(sty, "\print out entries in v6 nd cache\n"); break; } return 1;}#if INSTALL_ATTACHE_IPV6_DADstatic boolean_t cmd_set_v6_dad_globals (struct sty *sty, enum help_level help, int argc, char **argv){ bits32_t xmits, interval; switch (help) { case help_none: if (argc != 3) { sty_printf (sty, "Wrong number of arguments. Usage: set-v6-dad <xmits> <interval>\n"); return 1; } xmits = atoi(argv[1]); interval = atoi(argv[2]); v6_set_dad_xmits((bits16_t)xmits); v6_set_dad_interval(interval); break; case help_short: sty_puts(sty, "set-v6-dad set v6 DAD global information\n"); break; case help_long: sty_puts(sty, "\Usage: set-v6-dad <xmits> <interval>\n"); break; } return 1;}static boolean_t cmd_dump_v6_dad (struct sty *sty, enum help_level help, int argc, char **argv){ switch (help) { case help_none: v6_print_dad_list(); break; case help_short: sty_puts(sty, "dump-v6-dad print out entries in v6 dad list\n"); break; case help_long: sty_puts(sty, "\print out entries in v6 dad list\n"); break; } return 1;}#endif /* #if INSTALL_ATTACHE_IPV6_DAD */#if INSTALL_ATTACHE_IPV6_RDstatic boolean_t cmd_set_v6_rd_globals (struct sty *sty, enum help_level help, int argc, char **argv){ bits32_t xmits, interval, delay; switch (help) { case help_none: if (argc != 4) { sty_printf (sty, "Wrong number of arguments. Usage: set-v6-rd <xmits> <interval> <delay>\n"); return 1; } xmits = atoi(argv[1]); interval = atoi(argv[2]); delay = atoi(argv[3]); v6_set_rd_xmits((bits8_t)xmits); v6_set_rd_interval(interval); v6_set_rd_delay(delay); break; case help_short: sty_puts(sty, "set-v6-rd set v6 router discovery global information\n"); break; case help_long: sty_puts(sty, "\Usage: set-v6-rd <xmits> <interval> <delay>\n"); break; } return 1;}static boolean_t cmd_dump_v6_prefixes (struct sty *sty, enum help_level help, int argc, char **argv){ switch (help) { case help_none: v6_print_rd_prefix_list(); break; case help_short: sty_puts(sty, "dump-v6-prefix print out entries in v6 prefix list\n"); break; case help_long: sty_puts(sty, "\print out entries in v6 prefix list\n"); break; } return 1;}static boolean_t cmd_dump_v6_tokens (struct sty *sty, enum help_level help, int argc, char **argv){ switch (help) { case help_none: v6_print_rd_token_list(); break; case help_short: sty_puts(sty, "dump-v6-token print out entries in v6 token list\n"); break; case help_long: sty_puts(sty, "\print out entries in v6 token list\n"); break; } return 1;}#endif /* #if INSTALL_ATTACHE_IPV6_RD */#if INSTALL_ATTACHE_IPV6_REDIRECTstatic boolean_t cmd_set_v6_redirect_globals (struct sty *sty, enum help_level help, int argc, char **argv){ bits32_t interval, count; switch (help) { case help_none: if (argc != 3) { sty_printf (sty, "Wrong number of arguments. Usage: set-v6-redirect <interval> <count>\n"); return 1; } interval = atoi(argv[1]); count = atoi(argv[2]); v6_set_redirect_interval(interval); v6_set_redirect_count((bits16_t)count); break; case help_short: sty_puts(sty, "set-v6-redirect set v6 redirect global information\n"); break; case help_long: sty_puts(sty, "\Usage: set-v6-redirect <interval> <count>\n"); break; } return 1;}#endif /* #if INSTALL_ATTACHE_IPV6_REDIRECT */#if INSTALL_ATTACHE_IPV6_FRAGMENTATIONstatic boolean_t cmd_set_v6_reasm_globals (struct sty *sty, enum help_level help, int argc, char **argv){ bits32_t max_pkts, max_time; switch (help) { case help_none: if (argc != 3) { sty_printf (sty, "Wrong number of arguments. Usage: set-v6-reasm <max_pkts> <max_time>\n"); return 1; } max_pkts = atoi(argv[1]); max_time = atoi(argv[2]); v6_set_reasm_max_pkts(max_pkts); v6_set_reasm_max_time(max_time); break; case help_short: sty_puts(sty, "set-v6-reasm set v6 reassembly global information\n"); break; case help_long: sty_puts(sty, "\Usage: set-v6-reasm <max_ptks> <max_time>\n"); break; } return 1;}#endif /* #if INSTALL_ATTACHE_IPV6_FRAGMENTATION */static boolean_t cmd_clean_nd (struct sty *sty, enum help_level help, int argc, char **argv){ switch (help) { case help_none: nd_shutdown(); nd_init(); break; case help_short: sty_puts(sty, "clean-nd clean up the nd cache for v6\n"); break; case help_long: sty_puts(sty, "\clean up the nd cache for v6\n"); break; } return 1;}#endif /* #if INSTALL_ATTACHE_IPV6 *//* * Keep this table in lexical order, lookup uses binary search. */extern boolean_t cmd_if_stat(struct sty *, enum help_level, int, char **);extern boolean_t cmd_if_down(struct sty *, enum help_level, int, char **);extern boolean_t cmd_if_up(struct sty *, enum help_level, int, char **);extern boolean_t cmd_if_detach(struct sty *, enum help_level, int, char **);extern boolean_t cmd_if_attach(struct sty *, enum help_level, int, char **);#if INSTALL_ATTACHE_IPSECstatic boolean_t cmd_addsa (struct sty *sty, enum he
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -