usrNetDhcprCfg.c
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* usrNetDhcprCfg.c - Initialization routine for the DHCP relay agent */
  2. /* Copyright 1992 - 2002 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,14may02,wap  Initialize structures to eliminate diab error (SPR #76331,
  7.                  SPR #76377)
  8. 01c,26mar02,vvv  check for errors (SPR #73503)
  9. 01b,09oct01,rae  merge from truestack (added DHCPS_MAX_MSGSIZE to call)
  10. 01a,18aug98,ann  created this configlette from usrNetwork.c
  11. */
  12. /*
  13. DESCRIPTION
  14. This configlette contains the initialization routine for the 
  15. INCLUDE_DHCPR component.
  16. NOMANUAL
  17. */
  18. #include "dhcp/dhcp.h"
  19. #include "dhcp/common.h"
  20. #include "dhcprLib.h"
  21. LOCAL int dhcprTaskPriority  = 56;    /* Priority level of DHCP relay agent */
  22. LOCAL int dhcprTaskOptions   = 0;     /* Option settings for DHCP relay agent */
  23. LOCAL int dhcprTaskStackSize = 2500;  /* Stack size for DHCP relay agent */
  24. IMPORT STATUS dhcprLibInit (int);
  25. IMPORT STATUS dhcprInit (struct ifnet **, int, DHCP_TARGET_DESC *, int);
  26. IMPORT void dhcprStart (void);
  27. /*
  28.  * The following table lists the IP addresses which will receive DHCP
  29.  * messages forwarded across network boundaries by a DHCP server or
  30.  * relay agent.
  31.  */
  32. DHCP_TARGET_DESC dhcpTargetTbl [] =
  33.     {
  34.     /*
  35.      IP address of DHCP target servers
  36.      ---------------------------------
  37.      */
  38.      /* {"90.11.42.2"}, */
  39.      { NULL } /* List terminator, must be last */
  40.      };
  41. LOCAL int dhcpTargetTblSize = (NELEMENTS(dhcpTargetTbl));
  42. struct ifnet *devlist[1];
  43. int dhcpMaxHops = DHCP_MAX_HOPS;
  44. int dhcpSPort = DHCPS_SPORT;
  45. int dhcpCPort = DHCPS_CPORT;
  46. void usrDhcprStart (void)
  47.     {
  48.     char        pDevName [MAX_FILENAME_LENGTH];  /* device name */
  49.     STATUS      dhcprResult;
  50.     if (dhcprLibInit (DHCPS_MAX_MSGSIZE) == ERROR)
  51. {
  52. printf ("Unable to initialize DHCP relay agent!n");
  53. return;
  54. }
  55.     /*
  56.      * For now, set server or relay agent to listen on boot device.
  57.      * Eventually, need to allow for multiple network devices.
  58.      */
  59.     pDevName [0] = EOS;
  60.     sprintf(pDevName, "%s%d", sysBootParams.bootDev, sysBootParams.unitNum);
  61.     devlist[0] = ifunit (pDevName);
  62.     if (devlist[0] == NULL)
  63.       printf("Network interface %s not found. DHCP relay agent not started.n",
  64.                 pDevName);
  65.     else
  66.         {
  67.         dhcprResult = dhcprInit (devlist, 1, dhcpTargetTbl, dhcpTargetTblSize);
  68.         if (dhcprResult == ERROR)
  69.             printf ("Error initializing DHCP relay agent. Not started.n");
  70.         else
  71.             {
  72.             dhcprResult = taskSpawn ("tDhcprTask", dhcprTaskPriority,
  73.                                       dhcprTaskOptions, dhcprTaskStackSize,
  74.                                       (FUNCPTR) dhcprStart,
  75.                                       0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  76.             if (dhcprResult == ERROR)
  77.                 printf ("Unable to start DHCP relay agent task.n");
  78.             printf ("DHCP relay agent started.n");
  79.             }
  80.         }
  81.     }