home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / internet / tcpipsrc / h / AX25 < prev    next >
Text File  |  1994-06-06  |  4KB  |  95 lines

  1. /* AX.25 datagram (address) sub-layer definitions */
  2.  
  3. /* Maximum number of digipeaters */
  4. #define MAXDIGIS        7       /* 7 digipeaters plus src/dest */
  5. #define ALEN            6       /* Number of chars in callsign field */
  6. #define AXALEN          7       /* Total AX.25 address length, including SSID */
  7.  
  8. /* Internal representation of an AX.25 address */
  9. struct ax25_addr {
  10.         char call[ALEN];
  11.         char ssid;
  12. #define SSID            0x1e    /* Sub station ID */
  13. #define REPEATED        0x80    /* Has-been-repeated bit in repeater field */
  14. #define E               0x01    /* Address extension bit */
  15. #define C               0x80    /* Command/response designation */
  16. };
  17. #define NULLAXADDR      (struct ax25_addr *)0
  18. /* Our AX.25 address */
  19. extern struct ax25_addr mycall;
  20.  
  21. /* AX.25 broadcast address: "QST   -0" in shifted ASCII */
  22. extern struct ax25_addr ax25_bdcst;
  23.  
  24. /* Internal representation of an AX.25 header */
  25. struct ax25 {
  26.         struct ax25_addr dest;                  /* Destination address */
  27.         struct ax25_addr source;                /* Source address */
  28.         struct ax25_addr digis[MAXDIGIS];       /* Digi string */
  29.         int ndigis;                             /* Number of digipeaters */
  30.         int cmdrsp;                             /* Command/response */
  31. };
  32.  
  33. /* AX.25 mheard entry layout - to be qsorted by time */
  34. struct ax25mh {
  35.         time_t mheard_time;             /* time was last heard */
  36.         struct ax25_addr mheard_call;   /* recorded call sign */
  37.         int mheard_digi;                /* was digipeated at least once */
  38. };
  39.  
  40. /* C-bit stuff */
  41. #define UNKNOWN         0
  42. #define COMMAND         1
  43. #define RESPONSE        2
  44.  
  45. /* Bit fields in AX.25 Level 3 Protocol IDs (PIDs) */
  46. #define PID_SEGMENT     0x08    /* Segmentation fragment */
  47. #define PID_IP          0xcc    /* ARPA Internet Protocol */
  48. #define PID_ARP         0xcd    /* ARPA Address Resolution Protocol */
  49. #define PID_NETROM      0xcf    /* NET/ROM */
  50. #define PID_NO_L3       0xf0    /* No level 3 protocol */
  51.  
  52. #define SEG_FIRST       0x80    /* First segment of a sequence */
  53. #define SEG_REM         0x7f    /* Mask for # segments remaining */
  54.  
  55. /* In AX25 */
  56. int  ax_send(struct mbuf *, struct interface *, int32, char, char, char, char);
  57. int  ax_output(struct interface *, char *, char *, char, struct mbuf *);
  58. void ax_recv(struct interface *, struct mbuf *);
  59. void axarp(void);
  60.  
  61. /* In AX25CMD */
  62. int  doax25(int, char **);
  63. int  doconnect(int, char **);
  64. void ax_parse(struct session *, char *, int16);
  65.  
  66. /* In AX25DUMP */
  67. void ax25_dump(struct mbuf **, int);
  68. char *decode_type(int16);
  69.  
  70. /* In AX25SUBR */
  71. struct ax25_cb *find_ax25(struct ax25_addr *);
  72. void   del_ax25(struct ax25_cb *);
  73. struct ax25_cb *cr_ax25(struct ax25_addr *);
  74. int    setcall(struct ax25_addr *, char *);
  75. int    setpath(char *, char **, int);
  76. int    addreq(struct ax25_addr *, struct ax25_addr *);
  77. int    pax25(char *, struct ax25_addr *);
  78. int    psax25(char *, char *);
  79. char   *getaxaddr(struct ax25_addr *, char *);
  80. char *putaxaddr(char *, struct ax25_addr *);
  81. struct mbuf *htonax25(struct ax25 *, struct mbuf *);
  82. int  atohax25(struct ax25 *, char *, struct ax25_addr *);
  83. int  ntohax25(struct ax25 *, struct mbuf **);
  84. int16 ftype(char);
  85.  
  86. /* In AX25USER */
  87. int  send_ax25(struct ax25_cb *, struct mbuf *);
  88. int  aprintf(struct ax25_cb *, char *, ...);
  89. struct mbuf *recv_ax25(struct ax25_cb *, int16);
  90. void disc_ax25(struct ax25_cb *);
  91. int  ax25val(struct ax25_cb *);
  92. int  kick_ax25(struct ax25_cb *);
  93. void reset_ax25(struct ax25_cb *);
  94.  
  95.