ipx.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * The following information is in its entirety obtained from:
  3.  *
  4.  * Novell 'IPX Router Specification' Version 1.10 
  5.  * Part No. 107-000029-001
  6.  *
  7.  * Which is available from ftp.novell.com
  8.  */
  9. #ifndef _NET_INET_IPX_H_
  10. #define _NET_INET_IPX_H_
  11. #include <linux/netdevice.h>
  12. #include <net/datalink.h>
  13. #include <linux/ipx.h>
  14. typedef struct
  15. {
  16. __u32   net;
  17. __u8    node[IPX_NODE_LEN]; 
  18. __u16   sock;
  19. } ipx_address;
  20. #define ipx_broadcast_node "377377377377377377"
  21. #define ipx_this_node           ""
  22. #define IPX_MAX_PPROP_HOPS 8
  23. struct ipxhdr
  24. {
  25. __u16           ipx_checksum __attribute__ ((packed));
  26. #define IPX_NO_CHECKSUM 0xFFFF
  27. __u16           ipx_pktsize __attribute__ ((packed));
  28. __u8            ipx_tctrl;
  29. __u8            ipx_type;
  30. #define IPX_TYPE_UNKNOWN 0x00
  31. #define IPX_TYPE_RIP 0x01 /* may also be 0 */
  32. #define IPX_TYPE_SAP 0x04 /* may also be 0 */
  33. #define IPX_TYPE_SPX 0x05 /* SPX protocol */
  34. #define IPX_TYPE_NCP 0x11 /* $lots for docs on this (SPIT) */
  35. #define IPX_TYPE_PPROP 0x14 /* complicated flood fill brdcast */
  36. ipx_address ipx_dest __attribute__ ((packed));
  37. ipx_address ipx_source __attribute__ ((packed));
  38. };
  39. typedef struct ipx_interface {
  40. /* IPX address */
  41. __u32           if_netnum;
  42. unsigned char if_node[IPX_NODE_LEN];
  43. atomic_t        refcnt;
  44. /* physical device info */
  45. struct net_device *if_dev;
  46. struct datalink_proto *if_dlink;
  47. unsigned short if_dlink_type;
  48. /* socket support */
  49. unsigned short if_sknum;
  50. struct sock *if_sklist;
  51. spinlock_t      if_sklist_lock;
  52. /* administrative overhead */
  53. int if_ipx_offset;
  54. unsigned char if_internal;
  55. unsigned char if_primary;
  56. struct ipx_interface *if_next;
  57. } ipx_interface;
  58. typedef struct ipx_route {
  59. __u32         ir_net;
  60. ipx_interface *ir_intrfc;
  61. unsigned char ir_routed;
  62. unsigned char ir_router_node[IPX_NODE_LEN];
  63. struct ipx_route *ir_next;
  64. atomic_t      refcnt;
  65. } ipx_route;
  66. #ifdef __KERNEL__
  67. struct ipx_cb {
  68. u8 ipx_tctrl;
  69. u32 ipx_dest_net;
  70. u32 ipx_source_net;
  71. struct {
  72. u32 netnum;
  73. int index;
  74. } last_hop;
  75. };
  76. #endif
  77. #define IPX_MIN_EPHEMERAL_SOCKET 0x4000
  78. #define IPX_MAX_EPHEMERAL_SOCKET 0x7fff
  79. extern int ipx_register_spx(struct proto_ops **, struct net_proto_family *);
  80. extern int ipx_unregister_spx(void);
  81. #endif /* def _NET_INET_IPX_H_ */