📄 irdp_interface.c
字号:
DEFUN (ip_irdp_broadcast, ip_irdp_broadcast_cmd, "ip irdp broadcast", IP_STR "ICMP Router discovery on this interface using broadcast\n"){ struct interface *ifp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } irdp_if_start(ifp, FALSE, TRUE); return CMD_SUCCESS;}DEFUN (ip_irdp_no, ip_irdp_cmd_no, "no ip irdp", IP_STR "Disable ICMP Router discovery on this interface\n"){ struct interface *ifp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } irdp_if_stop(ifp); return CMD_SUCCESS;}DEFUN (ip_irdp_shutdown, ip_irdp_shutdown_cmd, "ip irdp shutdown", IP_STR "ICMP Router discovery shutdown on this interface\n"){ struct interface *ifp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } irdp_if_shutdown(ifp); return CMD_SUCCESS;}DEFUN (ip_irdp_no_shutdown, ip_irdp_no_shutdown_cmd, "no ip irdp shutdown", IP_STR "ICMP Router discovery no shutdown on this interface\n"){ struct interface *ifp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } irdp_if_no_shutdown(ifp); return CMD_SUCCESS;}DEFUN (ip_irdp_holdtime, ip_irdp_holdtime_cmd, "ip irdp holdtime <0-9000>", IP_STR "ICMP Router discovery on this interface\n" "Set holdtime value\n" "Holdtime value in seconds. Default is 1800 seconds\n"){ struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; irdp->Lifetime = atoi(argv[0]); return CMD_SUCCESS;}DEFUN (ip_irdp_minadvertinterval, ip_irdp_minadvertinterval_cmd, "ip irdp minadvertinterval <3-1800>", IP_STR "ICMP Router discovery on this interface\n" "Set minimum time between advertisement\n" "Minimum advertisement interval in seconds\n"){ struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; if( atoi(argv[0]) <= irdp->MaxAdvertInterval) { irdp->MinAdvertInterval = atoi(argv[0]); return CMD_SUCCESS; } vty_out (vty, "ICMP warning maxadvertinterval is greater or equal than minadvertinterval%s", VTY_NEWLINE); vty_out (vty, "Please correct!%s", VTY_NEWLINE); return CMD_WARNING;}DEFUN (ip_irdp_maxadvertinterval, ip_irdp_maxadvertinterval_cmd, "ip irdp maxadvertinterval <4-1800>", IP_STR "ICMP Router discovery on this interface\n" "Set maximum time between advertisement\n" "Maximum advertisement interval in seconds\n"){ struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; if( irdp->MinAdvertInterval <= atoi(argv[0]) ) { irdp->MaxAdvertInterval = atoi(argv[0]); return CMD_SUCCESS; } vty_out (vty, "ICMP warning maxadvertinterval is greater or equal than minadvertinterval%s", VTY_NEWLINE); vty_out (vty, "Please correct!%s", VTY_NEWLINE); return CMD_WARNING;}DEFUN (ip_irdp_preference, ip_irdp_preference_cmd, /* DEFUN needs to be fixed for negative ranages... Be positive for now. :-) "ip irdp preference <-2147483648-2147483647>", */ "ip irdp preference <0-2147483647>", IP_STR "ICMP Router discovery on this interface\n" "Set default preference level for this interface\n" "Preference level\n"){ struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; irdp->Preference = atoi(argv[0]); return CMD_SUCCESS;}DEFUN (ip_irdp_address_preference, ip_irdp_address_preference_cmd, "ip irdp address A.B.C.D preference <0-2147483647>", IP_STR "Alter ICMP Router discovery preference this interface\n" "Specify IRDP non-default preference to advertise\n" "Set IRDP address for advertise\n" "Preference level\n"){ listnode node; struct in_addr ip; int pref; int ret; struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; struct Adv *adv; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; ret = inet_aton(argv[0], &ip); if(!ret) return CMD_WARNING; pref = atoi(argv[1]); for (node = listhead (irdp->AdvPrefList); node; nextnode (node)) { adv = getdata (node); if(adv->ip.s_addr == ip.s_addr) return CMD_SUCCESS; } adv = Adv_new(); adv->ip = ip; adv->pref = pref; listnode_add(irdp->AdvPrefList, adv); return CMD_SUCCESS;}DEFUN (ip_irdp_address_preference_no, ip_irdp_address_preference_cmd_no, "no ip irdp address A.B.C.D preference <0-2147483647>", IP_STR "Alter ICMP Router discovery preference this interface\n" "Removes IRDP non-default preference\n" "Select IRDP address\n" "Old preference level\n"){ listnode node; struct in_addr ip; int pref; int ret; struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; struct Adv *adv; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; ret = inet_aton(argv[0], &ip); if(!ret) return CMD_WARNING; pref = atoi(argv[1]); for (node = listhead (irdp->AdvPrefList); node; nextnode (node)) { adv = getdata (node); if(adv->ip.s_addr == ip.s_addr ) { listnode_delete(irdp->AdvPrefList, adv); break; } } return CMD_SUCCESS;}DEFUN (ip_irdp_debug_messages, ip_irdp_debug_messages_cmd, "ip irdp debug messages", IP_STR "ICMP Router discovery debug Averts. and Solicits (short)\n"){ struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; irdp->flags |= IF_DEBUG_MESSAGES; return CMD_SUCCESS;}DEFUN (ip_irdp_debug_misc, ip_irdp_debug_misc_cmd, "ip irdp debug misc", IP_STR "ICMP Router discovery debug Averts. and Solicits (short)\n"){ struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; irdp->flags |= IF_DEBUG_MISC; return CMD_SUCCESS;}DEFUN (ip_irdp_debug_packet, ip_irdp_debug_packet_cmd, "ip irdp debug packet", IP_STR "ICMP Router discovery debug Averts. and Solicits (short)\n"){ struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; irdp->flags |= IF_DEBUG_PACKET; return CMD_SUCCESS;}DEFUN (ip_irdp_debug_disable, ip_irdp_debug_disable_cmd, "ip irdp debug disable", IP_STR "ICMP Router discovery debug Averts. and Solicits (short)\n"){ struct interface *ifp; struct zebra_if *zi; struct irdp_interface *irdp; ifp = (struct interface *) vty->index; if(!ifp) { return CMD_WARNING; } zi=ifp->info; irdp=&zi->irdp; irdp->flags &= ~IF_DEBUG_PACKET; irdp->flags &= ~IF_DEBUG_MESSAGES; irdp->flags &= ~IF_DEBUG_MISC; return CMD_SUCCESS;}voidirdp_if_init (){ install_element (INTERFACE_NODE, &ip_irdp_broadcast_cmd); install_element (INTERFACE_NODE, &ip_irdp_multicast_cmd); install_element (INTERFACE_NODE, &ip_irdp_cmd_no); install_element (INTERFACE_NODE, &ip_irdp_shutdown_cmd); install_element (INTERFACE_NODE, &ip_irdp_no_shutdown_cmd); install_element (INTERFACE_NODE, &ip_irdp_holdtime_cmd); install_element (INTERFACE_NODE, &ip_irdp_maxadvertinterval_cmd); install_element (INTERFACE_NODE, &ip_irdp_minadvertinterval_cmd); install_element (INTERFACE_NODE, &ip_irdp_preference_cmd); install_element (INTERFACE_NODE, &ip_irdp_address_preference_cmd); install_element (INTERFACE_NODE, &ip_irdp_address_preference_cmd_no); install_element (INTERFACE_NODE, &ip_irdp_debug_messages_cmd); install_element (INTERFACE_NODE, &ip_irdp_debug_misc_cmd); install_element (INTERFACE_NODE, &ip_irdp_debug_packet_cmd); install_element (INTERFACE_NODE, &ip_irdp_debug_disable_cmd);}#endif /* HAVE_IRDP */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -