|
|
@@ -0,0 +1,64 @@
|
|
|
+#include "test_pppos.h"
|
|
|
+
|
|
|
+#include "lwip/netif.h"
|
|
|
+#include "netif/ppp/pppos.h"
|
|
|
+#include "netif/ppp/ppp.h"
|
|
|
+
|
|
|
+#if PPP_SUPPORT && PPPOS_SUPPORT
|
|
|
+static struct netif pppos_netif;
|
|
|
+static ppp_pcb *ppp;
|
|
|
+
|
|
|
+static u32_t ppp_output_cb(struct ppp_pcb_s *pcb, u8_t *data, u32_t len, void *ctx)
|
|
|
+{
|
|
|
+ LWIP_UNUSED_ARG(pcb);
|
|
|
+ LWIP_UNUSED_ARG(data);
|
|
|
+ LWIP_UNUSED_ARG(len);
|
|
|
+ LWIP_UNUSED_ARG(ctx);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static void ppp_link_status_cb(ppp_pcb *pcb, int err_code, void *ctx)
|
|
|
+{
|
|
|
+ LWIP_UNUSED_ARG(pcb);
|
|
|
+ LWIP_UNUSED_ARG(err_code);
|
|
|
+ LWIP_UNUSED_ARG(ctx);
|
|
|
+}
|
|
|
+
|
|
|
+static void pppos_setup(void)
|
|
|
+{
|
|
|
+ ppp = pppos_create(&pppos_netif, ppp_output_cb, ppp_link_status_cb, NULL);
|
|
|
+ fail_if(ppp == NULL);
|
|
|
+ ppp_connect(ppp, 0);
|
|
|
+}
|
|
|
+
|
|
|
+static void pppos_teardown(void)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+START_TEST(test_pppos_empty_packet_with_valid_fcs)
|
|
|
+{
|
|
|
+ u8_t two_breaks[] = { 0x7e, 0, 0, 0x7e };
|
|
|
+ u8_t other_packet[] = { 0x7e, 0x7d, 0x20, 0x00, 0x7e };
|
|
|
+ /* Set internal states of the underlying pcb */
|
|
|
+ pppos_pcb *pppos = (pppos_pcb *)ppp->link_ctx_cb;
|
|
|
+ pppos->open = 1; /* Pretend the connection is open already */
|
|
|
+ pppos->in_accm[0] = 0xf0; /* Make sure 0x0's are not escaped chars */
|
|
|
+
|
|
|
+ pppos_input(ppp, two_breaks, sizeof(two_breaks));
|
|
|
+ pppos_input(ppp, other_packet, sizeof(other_packet));
|
|
|
+
|
|
|
+}
|
|
|
+END_TEST
|
|
|
+
|
|
|
+/** Create the suite including all tests for this module */
|
|
|
+Suite *
|
|
|
+pppos_suite(void)
|
|
|
+{
|
|
|
+ testfunc tests[] = {
|
|
|
+ TESTFUNC(test_pppos_empty_packet_with_valid_fcs)
|
|
|
+ };
|
|
|
+ return create_suite("PPPOS", tests, sizeof(tests)/sizeof(testfunc), pppos_setup, pppos_teardown);
|
|
|
+}
|
|
|
+
|
|
|
+#endif /* PPP_SUPPORT && PPPOS_SUPPORT */
|