home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / net / syncppp.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.4 KB  |  105 lines

  1. /*
  2.  * Defines for synchronous PPP/Cisco link level subroutines.
  3.  *
  4.  * Copyright (C) 1994 Cronyx Ltd.
  5.  * Author: Serge Vakulenko, <vak@zebub.msk.su>
  6.  *
  7.  * This software is distributed with NO WARRANTIES, not even the implied
  8.  * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  9.  *
  10.  * Authors grant any other persons or organizations permission to use
  11.  * or modify this software as long as this message is kept with the software,
  12.  * all derivative works or modified versions.
  13.  *
  14.  * Version 1.7, Wed Jun  7 22:12:02 MSD 1995
  15.  *
  16.  *
  17.  *
  18.  */
  19.  
  20. #ifndef _SYNCPPP_H_
  21. #define _SYNCPPP_H_ 1
  22.  
  23. #ifdef __KERNEL__
  24. struct slcp {
  25.     u16    state;          /* state machine */
  26.     u32    magic;          /* local magic number */
  27.     u_char    echoid;         /* id of last keepalive echo request */
  28.     u_char    confid;         /* id of last configuration request */
  29. };
  30.  
  31. struct sipcp {
  32.     u16    state;          /* state machine */
  33.     u_char  confid;         /* id of last configuration request */
  34. };
  35.  
  36. struct sppp 
  37. {
  38.     struct sppp *    pp_next;    /* next interface in keepalive list */
  39.     u32        pp_flags;    /* use Cisco protocol instead of PPP */
  40.     u16        pp_alivecnt;    /* keepalive packets counter */
  41.     u16        pp_loopcnt;    /* loopback detection counter */
  42.     u32        pp_seq;        /* local sequence number */
  43.     u32        pp_rseq;    /* remote sequence number */
  44.     struct slcp    lcp;        /* LCP params */
  45.     struct sipcp    ipcp;        /* IPCP params */
  46.     u32        ibytes,obytes;    /* Bytes in/out */
  47.     u32        ipkts,opkts;    /* Packets in/out */
  48.     struct timer_list    pp_timer;
  49.     struct net_device    *pp_if;
  50.     char        pp_link_state;    /* Link status */
  51.     spinlock_t      lock;
  52. };
  53.  
  54. struct ppp_device
  55. {    
  56.     struct net_device *dev;    /* Network device pointer */
  57.     struct sppp sppp;    /* Synchronous PPP */
  58. };
  59.  
  60. static inline struct sppp *sppp_of(struct net_device *dev) 
  61. {
  62.     struct ppp_device **ppp = dev->priv;
  63.     BUG_ON((*ppp)->dev != dev);
  64.     return &(*ppp)->sppp;
  65. }
  66.  
  67. #define PP_KEEPALIVE    0x01    /* use keepalive protocol */
  68. #define PP_CISCO        0x02    /* use Cisco protocol instead of PPP */
  69. #define PP_TIMO         0x04    /* cp_timeout routine active */
  70. #define PP_DEBUG    0x08
  71.  
  72. #define PPP_MTU          1500    /* max. transmit unit */
  73.  
  74. #define LCP_STATE_CLOSED        0       /* LCP state: closed (conf-req sent) */
  75. #define LCP_STATE_ACK_RCVD      1       /* LCP state: conf-ack received */
  76. #define LCP_STATE_ACK_SENT      2       /* LCP state: conf-ack sent */
  77. #define LCP_STATE_OPENED        3       /* LCP state: opened */
  78.  
  79. #define IPCP_STATE_CLOSED       0       /* IPCP state: closed (conf-req sent) */
  80. #define IPCP_STATE_ACK_RCVD     1       /* IPCP state: conf-ack received */
  81. #define IPCP_STATE_ACK_SENT     2       /* IPCP state: conf-ack sent */
  82. #define IPCP_STATE_OPENED       3       /* IPCP state: opened */
  83.  
  84. #define SPPP_LINK_DOWN        0    /* link down - no keepalive */
  85. #define SPPP_LINK_UP        1    /* link is up - keepalive ok */
  86.  
  87. void sppp_attach (struct ppp_device *pd);
  88. void sppp_detach (struct net_device *dev);
  89. int sppp_do_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd);
  90. struct sk_buff *sppp_dequeue (struct net_device *dev);
  91. int sppp_isempty (struct net_device *dev);
  92. void sppp_flush (struct net_device *dev);
  93. int sppp_open (struct net_device *dev);
  94. int sppp_reopen (struct net_device *dev);
  95. int sppp_close (struct net_device *dev);
  96. #endif
  97.  
  98. #define SPPPIOCCISCO    (SIOCDEVPRIVATE)
  99. #define SPPPIOCPPP    (SIOCDEVPRIVATE+1)
  100. #define SPPPIOCDEBUG    (SIOCDEVPRIVATE+2)
  101. #define SPPPIOCSFLAGS    (SIOCDEVPRIVATE+3)
  102. #define SPPPIOCGFLAGS    (SIOCDEVPRIVATE+4)
  103.  
  104. #endif /* _SYNCPPP_H_ */
  105.