aboutsummaryrefslogtreecommitdiffstats
path: root/ncpd/ncp.h
diff options
context:
space:
mode:
Diffstat (limited to 'ncpd/ncp.h')
-rw-r--r--ncpd/ncp.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/ncpd/ncp.h b/ncpd/ncp.h
new file mode 100644
index 0000000..9e8444c
--- /dev/null
+++ b/ncpd/ncp.h
@@ -0,0 +1,49 @@
+#ifndef _ncp_h_
+#define _ncp_h_
+
+#include "bool.h"
+#include "bufferstore.h"
+class link;
+class channel;
+class IOWatch;
+
+class ncp {
+ public:
+ ncp(const char *fname, int baud, IOWatch &iow);
+ ~ncp();
+
+ int connect(channel *c); // returns channel, or -1 if failure
+ void disconnect(int channel);
+ void send(int channel, bufferStore &a);
+ void poll();
+ bool stuffToSend();
+ bool hasFailed();
+ bool gotLinkChannel();
+
+ private:
+ enum c { MAX_LEN = 200, LAST_MESS = 1, NOT_LAST_MESS = 2 };
+ enum interControllerMessageType {
+ // Inter controller message types
+ NCON_MSG_DATA_XOFF=1,
+ NCON_MSG_DATA_XON=2,
+ NCON_MSG_CONNECT_TO_SERVER=3,
+ NCON_MSG_CONNECT_RESPONSE=4,
+ NCON_MSG_CHANNEL_CLOSED=5,
+ NCON_MSG_NCP_INFO=6,
+ NCON_MSG_CHANNEL_DISCONNECT=7,
+ NCON_MSG_NCP_END=8
+ };
+ int getFirstUnusedChan();
+ void decodeControlMessage(bufferStore &buff);
+ void controlChannel(int chan, enum interControllerMessageType t, bufferStore &command);
+ char * ctrlMsgName(unsigned char);
+
+ link *l;
+ channel *channelPtr[8];
+ bufferStore messageList[8];
+ int remoteChanList[8];
+ bool gotLinkChan;
+ bool failed;
+};
+
+#endif