tw_cli_ip.c.svn-base
上传用户:hujq123
上传日期:2016-04-10
资源大小:153k
文件大小:18k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. /* 
  2.  * Copyright (C) 2002 Koninklijke Philips Electronics N.V., 
  3.  * All Rights Reserved. 
  4.  *
  5.  * This source code and any compilation or derivative thereof is the 
  6.  * proprietary information of Koninklijke Philips Electronics N.V. 
  7.  * and is confidential in nature. 
  8.  * Under no circumstances is this software to be exposed to or placed 
  9.  * under an Open Source License of any type without the expressed 
  10.  * written permission of Koninklijke Philips Electronics N.V. 
  11.  * 
  12.  *###########################################################
  13.  */ 
  14. /*! 
  15.  *      file           tw_cli_ip.c 
  16.  * 
  17.  *      brief          - 
  18.  * 
  19.  */ 
  20. /*-----------------------------------------------------------*
  21.  * 
  22.  *      %version:       3 % 
  23.  *      instance:       DS_6 
  24.  *      %date_created:  Fri Feb 21 08:04:33 2003 % 
  25.  *
  26.  *###########################################################
  27.  */ 
  28. /****************************************************************************
  29. *
  30. * Filename   : tw_cli_ip.c
  31. * Purpose    : CLI command objects and functions to support IP commands. 
  32. *
  33. *
  34. *****************************************************************************/
  35. #include <stdio.h>
  36. #include <stdarg.h>
  37. #include <string.h>
  38. #include <tmtypes.h>
  39. #include <tw_cli.h>
  40. /*****************************************************************************
  41. *
  42. * External Globals
  43. *
  44. *****************************************************************************/
  45. static int CliCoVoproc_Unavailable(Cli_cmdSession_t *pSess, 
  46.                                   char *CmdStr, int Ptr);
  47. /**************** *** Definition of CLI Command Objects *** ***************/
  48. /***                 "ip" commands                  ***/
  49. /*** 3rd level CLI Command Option - ip arp "flush"
  50. ***/
  51. static int CliCoProc_IpArpFlush(Cli_cmdSession_t *pSess, 
  52.                                 char *CmdStr, int Ptr);
  53. Cli_CmdStruct_t  CliCo_IpArpFlush =
  54. {
  55.     "flush",
  56.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  57.     NULL,
  58.     "flush the entire IP ARP cache",
  59.     NULL_HELP_FUNC,
  60. #if defined(FUSION_TCPIP)
  61.     CliCoProc_IpArpFlush,
  62. #else
  63.     CliCoVoproc_Unavailable,
  64. #endif
  65.     NULL_VAR_OPT_FUNC
  66. };
  67. /*** 3rd level CLI Command Option - ip route "add"
  68. ***/
  69. static int CliCoVoproc_IpRouteAdd(Cli_cmdSession_t *pSess, 
  70.                                   char *CmdStr, int Ptr);
  71. Cli_CmdStruct_t  CliCo_IpRouteAdd =
  72. {
  73.     "add",
  74.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  75.     NULL,
  76.     "add a static IP route {DEV_NAME GW_IP DST_IP/MASK COST}",
  77.     NULL_HELP_FUNC,
  78.     NULL_PROC_FUNC,
  79.     CliCoVoproc_IpRouteAdd
  80. };
  81. /*** 3rd level CLI Command Option - ip route "del"
  82. ***/
  83. static int CliCoVoproc_IpRouteDel(Cli_cmdSession_t *pSess, 
  84.                                   char *CmdStr, int Ptr);
  85. Cli_CmdStruct_t  CliCo_IpRouteDel =
  86. {
  87.     "del",
  88.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  89.     NULL,
  90.     "delete a static IP route {DEV_NAME DST_IP/MASK}",
  91.     NULL_HELP_FUNC,
  92.     NULL_PROC_FUNC,
  93.     CliCoVoproc_IpRouteDel
  94. };
  95. /*** 3rd level CLI Command Option - ip netdev "down"
  96. ***/
  97. static int CliCoVoproc_IpNetdevDown(Cli_cmdSession_t *pSess, 
  98.                                     char *CmdStr, int Ptr);
  99. Cli_CmdStruct_t  CliCo_IpNetdevDown =
  100. {
  101.     "down",
  102.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  103.     NULL,
  104.     "bring down a network device {DEV_NAME IP/MASK}",
  105.     NULL_HELP_FUNC,
  106.     NULL_PROC_FUNC,
  107. #if defined(FUSION_TCPIP)
  108.     CliCoVoproc_IpNetdevDown
  109. #else
  110.     CliCoVoproc_Unavailable
  111. #endif
  112. };
  113. /*** 3rd level CLI Command Option - ip netdev "up"
  114. ***/
  115. static int CliCoVoproc_IpNetdevUp(Cli_cmdSession_t *pSess, 
  116.                                   char *CmdStr, int Ptr);
  117. Cli_CmdStruct_t  CliCo_IpNetdevUp =
  118. {
  119.     "up",
  120.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  121.     NULL,
  122.     "bring up a network device {DEV_NAME IP/MASK}",
  123.     NULL_HELP_FUNC,
  124.     NULL_PROC_FUNC,
  125. #if defined(FUSION_TCPIP)
  126.     CliCoVoproc_IpNetdevUp
  127. #else
  128.     CliCoVoproc_Unavailable
  129. #endif
  130. };
  131. /*** 2nd level CLI Command Option - ip "arp"
  132. ***/
  133. Cli_CmdStruct_t *CliCoOptionList_IpArp[] =
  134. {
  135.     &CliCo_IpArpFlush,
  136.     NULL
  137. };
  138. Cli_CmdStruct_t CliCo_IpArp =
  139. {
  140.     "arp",
  141.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  142.     CliCoOptionList_IpArp,
  143.     "manipulate IP ARP cache",
  144.     NULL_HELP_FUNC,
  145.     NULL_PROC_FUNC,
  146.     NULL_VAR_OPT_FUNC
  147. };
  148. /*** 2nd level CLI Command Option - ip "route"
  149. ***/
  150. Cli_CmdStruct_t *CliCoOptionList_IpRoute[] =
  151. {
  152.     &CliCo_IpRouteAdd,
  153.     &CliCo_IpRouteDel,
  154.     NULL
  155. };
  156. Cli_CmdStruct_t CliCo_IpRoute =
  157. {
  158.     "route",
  159.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  160.     CliCoOptionList_IpRoute,
  161.     "configure static IP route",
  162.     NULL_HELP_FUNC,
  163.     NULL_PROC_FUNC,
  164.     NULL_VAR_OPT_FUNC
  165. };
  166. /*** 1st level CLI Command Option - "ip" 
  167. ***/
  168. Cli_CmdStruct_t *CliRcoOptionList_Ip[] = 
  169. {
  170.     &CliCo_IpArp,
  171.     &CliCo_IpRoute,
  172.     NULL
  173. };
  174. Cli_CmdStruct_t  CliRco_Ip = 
  175. {
  176.     "ip",
  177.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  178.     CliRcoOptionList_Ip,
  179.     "IP configuration command",
  180.     NULL_HELP_FUNC,
  181.     NULL_PROC_FUNC,
  182.     NULL_VAR_OPT_FUNC
  183. };
  184. /***                 "show ip" commands                  ***/
  185. /*** 3rd level CLI Command Option - show ip "arp"
  186. ***/
  187. static int CliCoProc_ShowIpArp(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  188. Cli_CmdStruct_t CliCo_ShowIpArp =
  189. {
  190.     "arp",
  191.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  192.     NULL,
  193.     "display IP ARP cache table",
  194.     NULL_HELP_FUNC,
  195. #if defined(FUSION_TCPIP)
  196.     CliCoProc_ShowIpArp,
  197. #else
  198.     CliCoVoproc_Unavailable,
  199. #endif
  200.     NULL_VAR_OPT_FUNC
  201. };
  202. /*** 3rd level CLI Command Option - show ip "netdev"
  203. ***/
  204. static int CliCoProc_ShowIpNetdev(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  205. Cli_CmdStruct_t CliCo_ShowIpNetdev =
  206. {
  207.     "netdev",
  208.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  209.     NULL,
  210.     "display routing port info",
  211.     NULL_HELP_FUNC,
  212. #if defined(FUSION_TCPIP)
  213.     CliCoProc_ShowIpNetdev,
  214. #else
  215.     CliCoVoproc_Unavailable,
  216. #endif
  217.     NULL_VAR_OPT_FUNC
  218. };
  219. /*** 3rd level CLI Command Option - show ip "udp"
  220. ***/
  221. extern int CliCoProc_ShowUdp(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  222. Cli_CmdStruct_t  CliCo_ShowUdp = 
  223.     "udp",
  224.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  225.     NULL,
  226.     "displays the udp socket statitistics from fusion",
  227.     NULL_HELP_FUNC,
  228. #if defined(FUSION_TCPIP)
  229.     CliCoProc_ShowUdp,
  230. #else
  231.     CliCoVoproc_Unavailable,
  232. #endif
  233.     NULL_VAR_OPT_FUNC
  234. };
  235. /*** 3rd level CLI Command Option - show ip "tcp"
  236. ***/
  237. extern int CliCoProc_ShowTcp(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  238. Cli_CmdStruct_t  CliCo_ShowTcp = 
  239.     "tcp",
  240.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  241.     NULL,
  242.     "displays the tcp socket statitistics from fusion",
  243.     NULL_HELP_FUNC,
  244. #if defined(FUSION_TCPIP)
  245.     CliCoProc_ShowTcp,
  246. #else
  247.     CliCoVoproc_Unavailable,
  248. #endif
  249.     NULL_VAR_OPT_FUNC
  250. };
  251. /*** 3rd level CLI Command Option - show ip "heap"
  252. ***/
  253. extern int CliCoProc_ShowHeap(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  254. Cli_CmdStruct_t  CliCo_ShowHeap = 
  255.     "heap",
  256.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  257.     NULL,
  258.     "displays the heap status in fusion",
  259.     NULL_HELP_FUNC,
  260. #if defined(FUSION_TCPIP)
  261.     CliCoProc_ShowHeap,
  262. #else
  263.     CliCoVoproc_Unavailable,
  264. #endif
  265.     NULL_VAR_OPT_FUNC
  266. };
  267. #if 0
  268. /*** 3rd level CLI Command Option - show ip "route"
  269. ***/
  270. extern int CliCoProc_ShowRoute(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  271. Cli_CmdStruct_t  CliCo_ShowIpRoute = 
  272.     "route",
  273.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  274.     NULL,
  275.     "displays all IP routes",
  276.     NULL_HELP_FUNC,
  277.     CliCoProc_ShowRoute,
  278.     NULL_VAR_OPT_FUNC
  279. };
  280. #endif
  281. /*** 2nd level CLI Command Option - show "ip"
  282. ***/
  283. Cli_CmdStruct_t *CliCoOptionList_ShowIp[] =
  284. {
  285.     &CliCo_ShowIpArp,
  286.     &CliCo_ShowIpNetdev,
  287.     &CliCo_ShowUdp,
  288.     &CliCo_ShowTcp,
  289.     &CliCo_ShowHeap,
  290.     NULL
  291. };
  292. Cli_CmdStruct_t CliCo_ShowIp =
  293. {
  294.     "ip",
  295.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  296.     CliCoOptionList_ShowIp,
  297.     "display IP related info",
  298.     NULL_HELP_FUNC,
  299.     NULL_PROC_FUNC,
  300.     NULL_VAR_OPT_FUNC
  301. };
  302. /***************************************************************************** 
  303. * int CliCoVoproc_IpRouteAdd(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  304. *
  305. * Description :
  306. * This is the command processing handler for
  307. *     "ip route add DEVICE_NAME GW_IP DST_IP/MASK COST"
  308. * Arguments :
  309. * Standard parameters.
  310. *
  311. * Returns :
  312. * 0 if OK, -1 if bad.
  313. *
  314. * History
  315. * who   when        why
  316. * KBL   10/9/99     created
  317. *
  318. *****************************************************************************/
  319. int CliCoVoproc_IpRouteAdd(Cli_cmdSession_t *pSess, 
  320.                            char *CmdStr, 
  321.                            int Ptr)
  322. {
  323.     int           Status;
  324.     char          DeviceName[20], GwIpStr[64], IpAndMaskStr[64];
  325.     unsigned int  DstIpAddress = 0, DstIpMask = 0, GwIpAddress = 0, Cost = 0;
  326.     if (sscanf(CmdStr + Ptr, "%s %s %s %d", 
  327.                DeviceName, GwIpStr, IpAndMaskStr, &Cost) != 4) 
  328.     {
  329.         goto BadParamError;
  330.     }
  331.     if (Cli_IpAndMask2int(GwIpStr, &GwIpAddress, NULL) == -1) 
  332.     {
  333.         goto BadParamError;
  334.     }
  335.     if (Cli_IpAndMask2int(IpAndMaskStr, &DstIpAddress, &DstIpMask) == -1) 
  336.     {
  337.         goto BadParamError;
  338.     }
  339. #if defined(FUSION_TCPIP)
  340.     Status = ll_route(DeviceName,
  341.                       GwIpAddress,
  342.                       DstIpAddress,
  343.                       DstIpMask,
  344.                       Cost);
  345. #endif /* defined(FUSION_TCPIP) */
  346. #if defined(BLUNK_TCPIP)
  347.     Status = tcpAddRoute(GwIpAddress, DstIpAddress,DstIpMask);
  348. #endif /* defined(BLUNK_TCPIP) */
  349.     if (!Status) 
  350.     {
  351.         Cli_Printf(pSess, "Static route installed for "
  352.                    "%d.%d.%d.%d/%d.%d.%d.%d via %d.%d.%d.%d thru %sn",
  353.                    (DstIpAddress >> 24) & 0xFF,
  354.                    (DstIpAddress >> 16) & 0xFF,
  355.                    (DstIpAddress >> 8 ) & 0xFF,
  356.                    (DstIpAddress      ) & 0xFF,
  357.                    (DstIpMask >> 24) & 0xFF,
  358.                    (DstIpMask >> 16) & 0xFF,
  359.                    (DstIpMask >> 8 ) & 0xFF,
  360.                    (DstIpMask      ) & 0xFF,
  361.                    (GwIpAddress >> 24) & 0xFF,
  362.                    (GwIpAddress >> 16) & 0xFF,
  363.                    (GwIpAddress >> 8 ) & 0xFF,
  364.                    (GwIpAddress      ) & 0xFF,
  365.                    DeviceName);
  366.     }
  367.     else
  368.     {
  369.         Cli_Printf(pSess, operationFailedStr);
  370.     }
  371.     goto Done;
  372. BadParamError:
  373.     Cli_Printf(pSess, badParamStr);
  374. Done :
  375.     return 0;
  376. }
  377. /***************************************************************************** 
  378. * CliCoVoproc_IpRouteDel(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  379. *
  380. * Description :
  381. * This is the command processing handler for
  382. *     "ip route del DEVICE_NAME DST_IP/MASK"
  383. * Arguments :
  384. * Standard parameters.
  385. *
  386. * Returns :
  387. * 0 if OK, -1 if bad.
  388. *
  389. * History
  390. * who   when        why
  391. * KBL   10/9/99     created
  392. *
  393. *****************************************************************************/
  394. int CliCoVoproc_IpRouteDel(Cli_cmdSession_t *pSess, 
  395.                            char *CmdStr, 
  396.                            int Ptr)
  397. {
  398.     int           Status;
  399.     char          DeviceName[20], IpAndMaskStr[64];
  400.     unsigned int  DstIpAddress = 0, DstIpMask = 0;
  401.     unsigned int  GwIpAddress = 0;
  402.     if (sscanf(CmdStr + Ptr, "%s %s", 
  403.                DeviceName, IpAndMaskStr) != 2) 
  404.     {
  405.         goto BadParamError;
  406.     }
  407.     if (Cli_IpAndMask2int(IpAndMaskStr, &DstIpAddress, &DstIpMask) == -1) 
  408.     {
  409.         goto BadParamError;
  410.     }
  411. #if defined(FUSION_TCPIP)
  412.     Status = ll_del_static_route(DeviceName,
  413.                       DstIpAddress,
  414.                       DstIpMask);
  415. #endif /* defined(FUSION_TCPIP) */
  416. #if defined(BLUNK_TCPIP)
  417.     Status = tcpDelRoute(GwIpAddress, DstIpAddress,DstIpMask);
  418. #endif /* defined(BLUNK_TCPIP) */
  419.     if (!Status) 
  420.     {
  421.         Cli_Printf(pSess, "Static route deleted for "
  422.                    "%d.%d.%d.%d/%d.%d.%d.%d thru %sn",
  423.                    (DstIpAddress >> 24) & 0xFF,
  424.                    (DstIpAddress >> 16) & 0xFF,
  425.                    (DstIpAddress >> 8 ) & 0xFF,
  426.                    (DstIpAddress      ) & 0xFF,
  427.                    (DstIpMask >> 24) & 0xFF,
  428.                    (DstIpMask >> 16) & 0xFF,
  429.                    (DstIpMask >> 8 ) & 0xFF,
  430.                    (DstIpMask      ) & 0xFF,
  431.                    DeviceName);
  432.     }
  433.     else
  434.     {
  435.         Cli_Printf(pSess, operationFailedStr);
  436.     }
  437.     goto Done;
  438. BadParamError:
  439.     Cli_Printf(pSess, badParamStr);
  440. Done :
  441.     return 0;
  442. }
  443. /***************************************************************************** 
  444. * int CliCoVoproc_IpNetdevUp(Cli_cmdSession_t *pSess, char *cmdStr, int ptr)
  445. *
  446. * Description :
  447. * This is the command processing handler for
  448. *     "netdev up x.x.x.x y.y.y.y"
  449. * Arguments :
  450. * Standard prarameters.
  451. *
  452. * Returns :
  453. * 0 if OK, -1 if bad.
  454. *
  455. * History
  456. * who   when        why
  457. * KBL   7/15/99     created
  458. *
  459. *****************************************************************************/
  460. int CliCoVoproc_IpNetdevUp(Cli_cmdSession_t *pSess, 
  461.                            char *cmdStr, 
  462.                            int ptr)
  463. {
  464.     int           errp;
  465.     char          *pb, devName[20];
  466.     unsigned int  ipaddress = 0;
  467.     unsigned int  ipmask = 0;
  468.     if (sscanf(cmdStr + ptr, "%s", devName) != 1)
  469.         goto ReturnError;
  470.     pb = cmdStr + ptr + strlen(devName);
  471.     if (Cli_IpAndMask2int(pb, &ipaddress, &ipmask) == -1) 
  472.     {
  473.         goto ReturnError;
  474.     }
  475.     Cli_Printf(pSess,
  476.                "Bringing up %s with %d.%d.%d.%d/%d.%d.%d.%d ...n", 
  477.                devName,
  478.                ipaddress & 0xFF, (ipaddress >> 8) & 0xFF,
  479.                (ipaddress >> 16) & 0xFF, (ipaddress >> 24) & 0xFF,
  480.                ipmask & 0xFF, (ipmask >> 8) & 0xFF,
  481.                (ipmask >> 16) & 0xFF, (ipmask >> 24) & 0xFF );
  482.     if ((errp = ll_config(devName, ipaddress, ipmask, 0, 0)) == 0)
  483.     {
  484.         Cli_Printf(pSess, "Donen");
  485.     }
  486.     else
  487.     {
  488.         Cli_Printf(pSess, "Failed (%d)n", errp);
  489.     }
  490.     return 0;
  491. ReturnError:
  492.     Cli_Printf(pSess, "Bad paramn");
  493.     return 0;
  494. }
  495. /***************************************************************************** 
  496. * int CliCoVoproc_IpNetdevDown(Cli_cmdSession_t *pSess, char *cmdStr, int ptr)
  497. *
  498. * Description :
  499. * This is the command processing handler for
  500. *     "netdev down x.x.x.x y.y.y.y"
  501. * Arguments :
  502. * Standard prarameters.
  503. *
  504. * Returns :
  505. * 0 if OK, -1 if bad.
  506. *
  507. * History
  508. * who   when        why
  509. * KBL   7/15/99     created
  510. *
  511. *****************************************************************************/
  512. int CliCoVoproc_IpNetdevDown(Cli_cmdSession_t *pSess, 
  513.                              char *cmdStr, 
  514.                              int ptr)
  515. {
  516.     int           errp;
  517.     char          *pb, devName[20];
  518.     unsigned int  ipaddress = 0;
  519.     unsigned int  ipmask = 0;
  520.     if (sscanf(cmdStr + ptr, "%s", devName) != 1)
  521.         goto ReturnError;
  522.     pb = cmdStr + ptr + strlen(devName);
  523.     if (Cli_IpAndMask2int(pb, &ipaddress, &ipmask) == -1) 
  524.     {
  525.         goto ReturnError;
  526.     }
  527.     Cli_Printf(pSess,
  528.                "Bringing down %s with %d.%d.%d.%d/%d.%d.%d.%d ...n", 
  529.                devName,
  530.                ipaddress & 0xFF, (ipaddress >> 8) & 0xFF,
  531.                (ipaddress >> 16) & 0xFF, (ipaddress >> 24) & 0xFF,
  532.                ipmask & 0xFF, (ipmask >> 8) & 0xFF,
  533.                (ipmask >> 16) & 0xFF, (ipmask >> 24) & 0xFF );
  534.     if ((errp = ll_unconfig(devName)) == 0)
  535.     {
  536.         Cli_Printf(pSess, "Donen");
  537.     }
  538.     else
  539.     {
  540.         Cli_Printf(pSess, "Failed (%d)n", errp);
  541.     }
  542.     return 0;
  543. ReturnError:
  544.     Cli_Printf(pSess, badParamStr);
  545.     return 0;
  546. }
  547. /***************************************************************************** 
  548. * int CliCoProc_ShowIpArp(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  549. *
  550. * Description :
  551. * This is the command processing handler for
  552. *     "show ip arp"
  553. * Arguments :
  554. * Standard prarameters.
  555. *
  556. * Returns :
  557. * 0 if OK, -1 if bad.
  558. *
  559. * History
  560. * who   when        why
  561. * KBL   12/27/99    created
  562. *
  563. *****************************************************************************/
  564. extern int Cli_PrintArp (Cli_cmdSession_t *pSess);
  565. static int CliCoProc_ShowIpArp(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  566. {
  567.     return Cli_PrintArp (pSess);
  568. }
  569. /***************************************************************************** 
  570. * int CliCoProc_IpArpFlush(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  571. *
  572. * Description :
  573. * This is the command processing handler for
  574. *     "ip arp flush"
  575. * Arguments :
  576. * Standard prarameters.
  577. *
  578. * Returns :
  579. * 0 if OK, -1 if bad.
  580. *
  581. * History
  582. * who   when        why
  583. * KBL   12/28/99    created
  584. *
  585. *****************************************************************************/
  586. extern int TwFns_ArpFlush (void);
  587. static int CliCoProc_IpArpFlush(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  588. {
  589.     TwFns_ArpFlush();
  590.     return 0;
  591. }
  592. /***************************************************************************** 
  593. * int CliCoProc_ShowIpNetdev(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  594. *
  595. * Description :
  596. * This is the command processing handler for
  597. *     "show ip netdev"
  598. * Arguments :
  599. * Standard prarameters.
  600. *
  601. * Returns :
  602. * 0 if OK, -1 if bad.
  603. *
  604. * History
  605. * who   when        why
  606. * KBL   2/31/00     created
  607. *
  608. *****************************************************************************/
  609. extern int      show_nd_status(void *pSess);
  610. extern UInt32   Fns_GetSysUpTimeInSecond( void );
  611. extern int      Cli_PrintPrimaryStaticIpFsm(Cli_cmdSession_t *pSess);
  612. int CliCoProc_ShowIpNetdev(Cli_cmdSession_t *pSess, char *cmdStr, int ptr)
  613. {
  614.     if (show_nd_status(pSess) < 0)
  615.     {        
  616.         return -1;
  617.     }          
  618.     return 0;
  619. }
  620. /***************************************************************************** 
  621. * int CliCoVoproc_Unavailable(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  622. *
  623. * Description :
  624. * Stub for unavailable feature.
  625. * Arguments :
  626. * Standard prarameters.
  627. *
  628. * Returns :
  629. * 0 if OK, -1 if bad.
  630. *
  631. * History
  632. * who   when        why
  633. * KBL   2/31/00     created
  634. *
  635. *****************************************************************************/
  636. static int CliCoVoproc_Unavailable(Cli_cmdSession_t *pSess, 
  637.                                   char *CmdStr, int Ptr)
  638. {
  639.     Cli_Printf(pSess, "FIXTHIS: Temporarily disabled because it's stack specific...n");
  640.     return 0;
  641. }