summaryrefslogtreecommitdiff
path: root/dos
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
parenteeefdbba6d8c3e34bf215c484ac2b5879759cafd (diff)
downloaduIP-FOSSIL-add-telnet.tar.gz
uIP-FOSSIL-add-telnet.zip
Initial, non-working telnet commitadd-telnet
Diffstat (limited to 'dos')
-rw-r--r--dos/main.c95
-rw-r--r--dos/mainutil.c120
-rw-r--r--dos/mainutil.h16
3 files changed, 149 insertions, 82 deletions
diff --git a/dos/main.c b/dos/main.c
index bde9462..d5a17e6 100644
--- a/dos/main.c
+++ b/dos/main.c
@@ -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