igmpLib.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* igmpLib.c - igmp protocol interface library */
  2. /* Copyright 1984 - 2001 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5. modification history
  6. --------------------
  7. 01b,15oct01,rae  merge from truestack ver 01c, base 01a (IGMPv2)
  8. 01a,20jan97,vin written
  9. */
  10. /*
  11. DESCRIPTION
  12. This library contains the interface to the igmp protocol. The IGMP protocol
  13. is configured in this library. 
  14. The routine igmpLibInit() is responsible for configuring the IGMP protocol
  15. with various parameters.
  16. INCLUDE FILES: netLib.h
  17. .pG "Network"
  18. NOMANUAL
  19. */
  20. /* includes */
  21. #include "vxWorks.h"
  22. #include "netLib.h"
  23. #include "net/protosw.h"
  24. #include "net/domain.h"
  25. #include "net/mbuf.h"
  26. #include "netinet/in.h"
  27. #include "netinet/in_systm.h"
  28. #include "netinet/in_pcb.h"
  29. #include "netinet/ip.h"
  30. #include "netinet/ip_var.h"
  31. #include "netinet/igmp_var.h"
  32. #ifdef VIRTUAL_STACK
  33. #include "netinet/vsLib.h"
  34. #endif
  35. /* externs */
  36. #ifndef VIRTUAL_STACK
  37. IMPORT int _protoSwIndex;
  38. IMPORT struct  protosw inetsw [IP_PROTO_NUM_MAX]; 
  39. #endif
  40. /* globals */
  41. /* defines */
  42. /* typedefs */
  43. /* locals */
  44. STATUS igmpLibInit (void)
  45.     {
  46.     FAST struct protosw * pProtoSwitch; 
  47.     if (_protoSwIndex >= sizeof(inetsw)/sizeof(inetsw[0]))
  48. return (ERROR) ;
  49.     pProtoSwitch = &inetsw [_protoSwIndex]; 
  50.     if (pProtoSwitch->pr_domain != NULL)
  51. return (OK);  /* already initialized */
  52.     pProtoSwitch->pr_type    =  SOCK_RAW;
  53.     pProtoSwitch->pr_domain    =  &inetdomain;
  54.     pProtoSwitch->pr_protocol   =  IPPROTO_IGMP;
  55.     pProtoSwitch->pr_flags =  PR_ATOMIC | PR_ADDR;
  56.     pProtoSwitch->pr_input =  igmp_input;
  57.     pProtoSwitch->pr_output =  rip_output;
  58.     pProtoSwitch->pr_ctlinput =  0;
  59.     pProtoSwitch->pr_ctloutput =  rip_ctloutput;
  60.     pProtoSwitch->pr_usrreq =  rip_usrreq;
  61.     pProtoSwitch->pr_init =  igmp_init;
  62.     pProtoSwitch->pr_fasttimo =  igmp_fasttimo;
  63.     pProtoSwitch->pr_slowtimo =  igmp_slowtimo;
  64.     pProtoSwitch->pr_drain =  0;
  65.     pProtoSwitch->pr_sysctl =  0;
  66.     _protoSwIndex++; 
  67.     return (OK); 
  68.     }