1 /* Copyright (C) 2007-2010 Open Information Security Foundation
2  *
3  * You can copy, redistribute or modify this Program under the terms of
4  * the GNU General Public License version 2 as published by the Free
5  * Software Foundation.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * version 2 along with this program; if not, write to the Free Software
14  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15  * 02110-1301, USA.
16  */
17 
18 /**
19  * \file
20  *
21  * \author Breno Silva Pinto <breno.silva@gmail.com>
22  */
23 
24 #ifndef __DECODE_PPP_H__
25 #define __DECODE_PPP_H__
26 
27 /** Point to Point Protocol RFC1331 - Supported tyes */
28 #define PPP_IP         0x0021       /* Internet Protocol */
29 #define PPP_IPV6       0x0057       /* Internet Protocol version 6 */
30 #define PPP_VJ_UCOMP   0x002f       /* VJ uncompressed TCP/IP */
31 
32 /** Unsupported PPP types (libpcap source reference) */
33 #define PPP_IPX        0x002b       /* Novell IPX Protocol */
34 #define PPP_VJ_COMP    0x002d       /* VJ compressed TCP/IP */
35 #define PPP_IPX        0x002b       /* Novell IPX Protocol */
36 #define PPP_OSI        0x0023       /* OSI Network Layer */
37 #define PPP_NS         0x0025       /* Xerox NS IDP */
38 #define PPP_DECNET     0x0027       /* DECnet Phase IV */
39 #define PPP_APPLE      0x0029       /* Appletalk */
40 #define PPP_BRPDU      0x0031       /* Bridging PDU */
41 #define PPP_STII       0x0033       /* Stream Protocol (ST-II) */
42 #define PPP_VINES      0x0035       /* Banyan Vines */
43 #define PPP_HELLO      0x0201       /* 802.1d Hello Packets */
44 #define PPP_LUXCOM     0x0231       /* Luxcom */
45 #define PPP_SNS        0x0233       /* Sigma Network Systems */
46 #define PPP_MPLS_UCAST 0x0281       /* rfc 3032 */
47 #define PPP_MPLS_MCAST 0x0283       /* rfc 3022 */
48 #define PPP_IPCP       0x8021       /* IP Control Protocol */
49 #define PPP_OSICP      0x8023       /* OSI Network Layer Control Protocol */
50 #define PPP_NSCP       0x8025       /* Xerox NS IDP Control Protocol */
51 #define PPP_DECNETCP   0x8027       /* DECnet Control Protocol */
52 #define PPP_APPLECP    0x8029       /* Appletalk Control Protocol */
53 #define PPP_IPXCP      0x802b       /* Novell IPX Control Protocol */
54 #define PPP_STIICP     0x8033       /* Strean Protocol Control Protocol */
55 #define PPP_VINESCP    0x8035       /* Banyan Vines Control Protocol */
56 #define PPP_IPV6CP     0x8057       /* IPv6 Control Protocol */
57 #define PPP_MPLSCP     0x8281       /* rfc 3022 */
58 #define PPP_LCP        0xc021       /* Link Control Protocol */
59 #define PPP_PAP        0xc023       /* Password Authentication Protocol */
60 #define PPP_LQM        0xc025       /* Link Quality Monitoring */
61 #define PPP_CHAP       0xc223       /* Challenge Handshake Authentication Protocol */
62 
63 /** PPP Packet header */
64 typedef struct PPPHdr_ {
65     uint8_t address;
66     uint8_t control;
67     uint16_t protocol;
68 } __attribute__((__packed__)) PPPHdr;
69 
70 /** PPP Packet header length */
71 #define PPP_HEADER_LEN 4
72 
73 void DecodePPPRegisterTests(void);
74 
75 #endif /* __DECODE_PPP_H__ */
76 
77