summaryrefslogtreecommitdiff
path: root/dos/mainutil.c
diff options
context:
space:
mode:
authorJeffrey Armstrong <jeffrey.armstrong@approximatrix.com>2017-02-25 09:18:47 -0500
committerJeffrey Armstrong <jeffrey.armstrong@approximatrix.com>2017-02-25 09:18:47 -0500
commit40ca2e594fa15e70aba00f0b5b6764ce175ade6c (patch)
treefb6d091116d66fa86d113e2ad01fb468c75cb92e /dos/mainutil.c
parenteeefdbba6d8c3e34bf215c484ac2b5879759cafd (diff)
downloaduIP-FOSSIL-40ca2e594fa15e70aba00f0b5b6764ce175ade6c.tar.gz
uIP-FOSSIL-40ca2e594fa15e70aba00f0b5b6764ce175ade6c.zip
Initial, non-working telnet commitadd-telnet
Diffstat (limited to 'dos/mainutil.c')
-rw-r--r--dos/mainutil.c120
1 files changed, 120 insertions, 0 deletions
diff --git a/dos/mainutil.c b/dos/mainutil.c
new file mode 100644
index 0000000..09e77c5
--- /dev/null
+++ b/dos/mainutil.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2009, 2017 Jeffrey Armstrong
+ * 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. 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 uIP TCP/IP stack - MS-DOS FOSSIL port.
+ *
+ * Author: Jeffrey Armstrong <jeff@rainbow-100.com>
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "fossil.h"
+#include "uip.h"
+#include "uip_arp.h"
+#include "slipdev.h"
+#include "slipfos.h"
+#include "mainutil.h"
+
+int common_init(char *host_ip, char *local_ip, char *netmask,
+ char *fos_port, char *fos_speed)
+{
+int ip[4];
+uip_ipaddr_t ipaddr;
+
+ timer_set(&periodic_timer, CLOCK_SECOND / 2);
+
+ /* Initialize the FOSSIL driver here */
+ printf("Initializing FOSSIL driver...");
+ if(slip_fossil_init(atoi(fos_speed),atoi(fos_port)) < 0) {
+ printf("FAILED\nExiting...\n");
+ return 0;
+ }
+ printf("OK\n");
+
+ printf("Initializing SLIP interface...");
+ slipdev_init();
+ printf("OK\n");
+
+ printf("Initializing uIP stack...");
+ uip_init();
+ printf("OK\n");
+
+ /* Set IP and netmask from command line arguments */
+ ip_from_string(host_ip,ip);
+ uip_ipaddr(&ipaddr, ip[0], ip[1], ip[2], ip[3]);
+ uip_setdraddr(&ipaddr);
+
+ ip_from_string(local_ip,ip);
+ uip_ipaddr(&ipaddr, ip[0], ip[1], ip[2], ip[3]);
+ uip_sethostaddr(&ipaddr);
+
+ ip_from_string(netmask,ip);
+ uip_ipaddr(&ipaddr, ip[0], ip[1], ip[2], ip[3]);
+ uip_setnetmask(&ipaddr);
+
+ return 1;
+}
+
+int ip_from_string(const char *string, int ip[4])
+{
+char *token;
+char *original;
+int i, ret;
+
+ for(i=0;i<4;i++) ip[i] = 0;
+ if(string == NULL) return -1;
+
+ original = (char *)malloc((strlen(string)+1)*sizeof(char));
+ memcpy(original,string,strlen(string)+1);
+
+ ret = 1;
+ token = strtok(original,".");
+ for(i=0;i<4;i++) {
+ if(token == NULL) {
+ ret = -1;
+ break;
+ }
+ ip[i] = atoi(token);
+ token = strtok(NULL,".");
+ }
+
+ token = NULL;
+ free(original);
+
+ return ret;
+}
+
+void uip_log(char *m)
+{
+#ifdef DEBUG
+ printf("uIP log message: %s\n", m);
+#endif
+}