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