aboutsummaryrefslogtreecommitdiff
path: root/src/run.c
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2025-09-09 03:14:50 +0200
committerXavier Del Campo Romero <xavi92@disroot.org>2025-09-18 01:08:14 +0200
commitc11cb04929f28853142b14339b66f561ca028f36 (patch)
treea77a3ddcc1d01028e4077cb295b9b41f594c5d52 /src/run.c
First commitHEADmaster
Diffstat (limited to 'src/run.c')
-rw-r--r--src/run.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/run.c b/src/run.c
new file mode 100644
index 0000000..8ef952f
--- /dev/null
+++ b/src/run.c
@@ -0,0 +1,49 @@
+/*
+ * wip, a small TCP/IP stack.
+ * Copyright (C) 2025 Xavier Del Campo Romero
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
+#include <wip/wip.h>
+#include <wip/prv/routines.h>
+
+int wip_run(struct wip *const w)
+{
+ enum wip_state n;
+
+again:
+
+ switch ((n = w->rx.next(w)))
+ {
+ case WIP_OK:
+ goto again;
+
+ case WIP_AGAIN:
+ break;
+
+ case WIP_FATAL:
+ return -1;
+
+ case WIP_INVALID:
+ wip_rx(w);
+ break;
+ }
+
+#if 0
+ switch (w->tx.next(w))
+ {
+ case WIP_OK:
+ case WIP_AGAIN:
+ break;
+
+ case WIP_INVALID:
+ case WIP_FATAL:
+ return -1;
+ }
+#endif
+
+ return 0;
+}