diff options
| author | Jeffrey Armstrong <jeffrey.armstrong@approximatrix.com> | 2017-02-25 09:18:47 -0500 |
|---|---|---|
| committer | Jeffrey Armstrong <jeffrey.armstrong@approximatrix.com> | 2017-02-25 09:18:47 -0500 |
| commit | 40ca2e594fa15e70aba00f0b5b6764ce175ade6c (patch) | |
| tree | fb6d091116d66fa86d113e2ad01fb468c75cb92e /dos | |
| parent | eeefdbba6d8c3e34bf215c484ac2b5879759cafd (diff) | |
| download | uIP-FOSSIL-40ca2e594fa15e70aba00f0b5b6764ce175ade6c.tar.gz uIP-FOSSIL-40ca2e594fa15e70aba00f0b5b6764ce175ade6c.zip | |
Initial, non-working telnet commitadd-telnet
Diffstat (limited to 'dos')
| -rw-r--r-- | dos/main.c | 95 | ||||
| -rw-r--r-- | dos/mainutil.c | 120 | ||||
| -rw-r--r-- | dos/mainutil.h | 16 |
3 files changed, 149 insertions, 82 deletions
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Jeffrey Armstrong + * Copyright (c) 2009, 2017 Jeffrey Armstrong * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,7 +36,15 @@ #include <stdlib.h> #include <string.h> +#ifdef HTTPD #include "httpd.h" +#else +#ifdef TELNET +#include "telnet.h" +#else +#error No app defined +#endif +#endif #include "main.h" /* Must come first - contains necessary declaration of * uip_tcp_appstate @@ -47,42 +55,13 @@ #include "uip_arp.h" #include "slipdev.h" #include "slipfos.h" - +#include "mainutil.h" #include "timer.h" #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) -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 header() { +void httpd_header() { printf("+----------------------------------------------------------+\n"); printf("| uIP/FOSSIL HTTP Server Version 1.2 |\n"); printf("| Copyright 2009, 2016 Jeffrey Armstrong |\n"); @@ -97,57 +76,16 @@ int i; uip_ipaddr_t ipaddr; struct timer periodic_timer; -int ip[4]; - - header(); + httpd_header(); if(argc != 6) { printf("Usage: %s <host ip> <local ip> <netmask> <comport> <baud>\n",argv[0]); return 0; } - timer_set(&periodic_timer, CLOCK_SECOND / 2); - - /* Initialize the FOSSIL driver here */ - printf("Initializing FOSSIL driver..."); - if(slip_fossil_init(atoi(argv[4]),atoi(argv[5])) < 0) { - printf("FAILED\nExiting...\n"); + if(common_init(argv[1], argv[2], argv[3], argv[4], argv[5]) == 0) { 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 */ - for(i=1;i<4;i++) { - if(ip_from_string(argv[i],ip) < 0) { - printf("Error parsing ip/netmask in argument %d: %s\nMake sure this argument is a valid 4-element dot-delimited string.\n",i,argv[i]); - return 0; - } else { - uip_ipaddr(&ipaddr, ip[0], ip[1], ip[2], ip[3]); - switch(i) { - case 1: - uip_setdraddr(&ipaddr); - break; - case 2: - uip_sethostaddr(&ipaddr); - break; - case 3: - uip_setnetmask(&ipaddr); - break; - } - } - } - - printf("Initializing httpd server..."); - httpd_init(); - printf("OK\n"); #ifdef INITIALIZE_ONLY return 1; @@ -197,10 +135,3 @@ int ip[4]; return 0; } - -void uip_log(char *m) -{ -#ifdef DEBUG - printf("uIP log message: %s\n", m); -#endif -} 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 +} diff --git a/dos/mainutil.h b/dos/mainutil.h new file mode 100644 index 0000000..1174a72 --- /dev/null +++ b/dos/mainutil.h @@ -0,0 +1,16 @@ +#ifndef __MAINUTIL_H__ +#define __MAINUTIL_H__ + +/* Initializes uIP, SLIP and the FOSSIL driver. Designed to + * basically accept program arguments as-is. + */ +int common_init(char *host_ip, char *local_ip, char *netmask, + char *fos_port, char *fos_speed); + +/* Converts IPv4 string to 4 integers */ +int ip_from_string(const char *string, int ip[4]); + +/* A uIP log-to-screen routine that is silent unless DEBUG is defined */ +void uip_log(char *m); + +#endif /* __MAINUTIL_H__ */
\ No newline at end of file |
