From 40ca2e594fa15e70aba00f0b5b6764ce175ade6c Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Sat, 25 Feb 2017 09:18:47 -0500 Subject: Initial, non-working telnet commit --- dos/mainutil.c | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 dos/mainutil.c (limited to 'dos/mainutil.c') 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 + * + */ + +#include +#include +#include + +#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 +} -- cgit v1.2.3