Imported initial version of PPP.

The original author is Mike Johnson. Adam Dunkels modified the code to better fit it into the Contiki world. I tried to glue it into the Contiki framework.

This version could - as far as I understand - work theoretically but certainly isn't supposed to.
diff --git a/contiki/ppp/ppp.h b/contiki/ppp/ppp.h
new file mode 100644
index 0000000..89a0665
--- /dev/null
+++ b/contiki/ppp/ppp.h
@@ -0,0 +1,132 @@
+#ifndef __PPP_H__
+#define __PPP_H__
+/*																www.mycal.net
+---------------------------------------------------------------------------
+ ppp.h - ppp header file      									 
+---------------------------------------------------------------------------
+ Version                                                                 
+ 0.1 Original Version June 3, 2000					      
+ (c)2000 Mycal Labs, All Rights Reserved	     
+ --------------------------------------------------------------------------- */
+/*
+ * Copyright (c) 2003, Mike Johnson, Mycal Labs, www.mycal.net
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Mike Johnson/Mycal Labs
+ *		www.mycal.net.
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Mycal Modified uIP TCP/IP stack.
+ *
+ * $Id: ppp.h,v 1.1 2004/08/20 12:29:54 oliverschmidt Exp $
+ *
+ */
+#include "uip.h"
+#include "ppp-conf.h"
+#include "ahdlc.h"
+#include "lcp.h"
+#include "ipcp.h"
+#include "pap.h"
+#include "ppp_arch.h"
+/*#include "mip.h"*/
+
+/* moved to pppconfig.h
+#define PPP_RX_BUFFER_SIZE	1024 
+#define PPP_TX_BUFFER_SIZE	64*/
+
+#define CRC_GOOD_VALUE		0xf0b8
+
+/* ppp_rx_status values */
+#define	PPP_RX_IDLE		0
+#define PPP_READY		1
+
+/* ppp flags */
+#define PPP_ESCAPED		0x1
+#define	PPP_RX_READY		0x2
+#define	PPP_RX_ASYNC_MAP	0x8
+#define PPP_TX_ASYNC_MAP	0x8
+#define PPP_PFC			0x10
+#define PPP_ACFC		0x20
+
+/* Supported PPP Protocols */
+#define LCP			0xc021
+#define PAP			0xc023
+#define IPCP			0x8021
+#define	IPV4			0x0021
+
+/* LCP codes packet types */
+#define CONF_REQ		0x1			
+#define CONF_ACK		0x2
+#define CONF_NAK		0x3
+#define CONF_REJ		0x4
+#define TERM_REQ		0x5
+#define TERM_ACK		0x6
+#define PROT_REJ		0x8
+
+/* Raise PPP config bits */
+#define USE_PAP			0x1
+#define USE_NOACCMBUG		0x2
+#define USE_GETDNS		0x4
+
+/*
+ * Export Variables
+ */
+/*extern u8_t ppp_tx_buffer[PPP_TX_BUFFER_SIZE];*/
+extern u8_t ppp_rx_buffer[];
+extern u8_t ppp_rx_count;
+
+typedef union {
+  u8_t ip8[4];
+  u16_t ip16[2];
+} uip_ipaddr_t;
+
+extern uip_ipaddr_t our_ipaddr;
+
+/*extern u16_t ppp_crc_error;*/
+
+extern u8_t ppp_flags;
+extern u8_t ppp_status;
+/*extern u16_t ppp_rx_crc; */
+extern u16_t ppp_rx_tobig_error;
+extern u8_t ppp_lcp_state;
+
+extern u8_t ppp_id;
+extern u8_t ppp_retry;
+
+/*
+ * Function Prototypes
+ */
+void ppp_init(void);
+void ppp_connect(u8_t *username, u8_t *password);
+
+void ppp_send(void);
+void ppp_poll(void);
+
+void ppp_upcall(u16_t, u8_t *, u16_t);
+u16_t scan_packet(u16_t, u8_t *list, u8_t *buffer, u8_t *options, u16_t len);
+
+#endif