Home

1 - SMARTech - Georgia Institute of Technology

image

Contents

1. 9 9 9 590609990064 1 6 12 17 23 26 28 30 31 32 33 34 TACCNET G36 633 Final Technical Report April 28 1987 1 Introduction This document has been prep
2. mm m m I mz char upstr s char s util c Oct 30 10 51 1986 int i for i 0 s i i s i upchar s i return s suppress blanks at the end of string char bl sup str char str int k str len str while k gt 0 66 str k 1 str k 0 return str 43 Page pad blanks to make the string length n char bl_ pad str n char str int n int kestrlen str 3 n str k str k return str 57 util c Oct 30 10 51 1986 char bl_ pad front str n char str int n i int char temp 80 kestrlen str for i20 i lt n k i templi for i n k j20 i lt n itt j temp i str 1 strncpy str temp n str n 0 return str AMS This section contains the functions used only by the batch oriented JINTACCS message preparation program AMS Table of Contents Thu Oct 30 10 50 23 1986 File Makefile Page File ams e Page 2 File ams h Page 3 File add c Page 6 addOBSdB 55 VERO UA ACCADE V imsOnode 6 addlnode i ER Pac c A A pura ee add 15 node i69 9 e or eR REA S54 S 7 ins 15 data IESU
3. add_ts_ node freetxt char freetxt tsnode ptrts ptrts tsnode malloc sizeof tsnode ptr1 uval tschild ptrts ptrts gt parent ptr ptrts gt tstext freetxt Parse Lower and Upper Bounds and TYPE out of NO TYPE pars form FORM char FORM char LB 4 UBL4 int is ve d for i20 FORMLi i list c Oct 30 10 51 1986 Page 43 for i 0 FORM i gt 0 amp amp FORM i lt 9 i j LB j 1 if mecum for i FORM i i for i k O FORM i gt 0 amp amp FORM i lt 9 j k UB k FORM i UB k NO for i FORM i i else strcpy UB LB for i 120 FORM i gt DTYPELI FORME DTYPE 1 O DMIN atoi LB atoi UB A amp amp FORM i lt Z jet 144 aaa a a ea Part 11 Routines to delete nodes and lists E indirectly recursive with del2list delete the linear set node pointed to by 12 and all its children dellsnode ptr snode ptr i if ptr gt fchild NULL dellslist ptr gt fchild if ptr gt Prev NULL NULL ptr gt parent gt uval ischild del Inode ptr gt parent NULL else ptr parent uval lschild ptr gt Next ptr
4. mmmmmmmI IIm z dt add c Oct 30 10 50 1986 pages add csf node fname field column Irj format char fname field column Irj f ormat esfieldnode ptresf ptresf esfieldnode malloc sizeof csfieldnode f the node is the first node of the parent node if ptrl uval cschild NULL i ptr1 uval cschild ptrcsf ptresf gt prev NULL else ptresf gt prev tailesf tailesf gt next ptrcsf ptresf gt parent ptrl ptresf gt next NULL ptresf gt fchild NULL strcpy ptresf gt fdname fname strcpy ptresf gt colhdr field strepy ptresf gt colpos column strcpy ptresf gt j Irj strcpy ptresf gt notype format tailesf ptresf AM E Emm Em MES EE uem wm h D CR M P MD uem ND A 24 24 44 Add a data node as the sublevel of the corresponding field node ZEILE add csd node SCAT char SCAT register int 1 int LIVE FALSE int FIRST TRUE char str 31 csfieldnode fptr dptr node fptr ptrl uval cschild point to the head of field list for 0 fptr j count the fields fptr fptr next allocate storage for pointers to field data nodes node csdatanode malloc j si
5. all is well hang up phone amp exit Connected FALSE remote system didn t answer connect to SysName remote system didn t answer if site is declared down give messages to MSGPROC modem didn t answer commands WriteLog Caller we have a problem with the modem at free Site else if Condition DOWN GiveToMP SysName free Site else Condition UP PortName release storage may be DOWN or DELAY may need to forward the messages release storage ValidSite returned NULL WriteLog Caller No entry for SysName defined in SITETABLE take some action or notify operator of this situation if DebugLevel WriteLog Caller unlocking if UnLock SysName ERR WriteLog Caller could not if DebugLevel WriteLog Caller freeing if FreePort PortName ERR WriteLog Caller could not exit ERR arrive here only int quit retcode int retcode hang up the if HangUp Site gt SysType WriteLog Caller could not 3 SysName TAS unlock SysName queue PortName free PortName after use if some error occurred above phone and exit 3 3 hang up the phone UnLock SysName ERR WriteLog Caller could not
6. addscr 154 0 int _ THRU FNO 0 05 1 char DVAL 21 COMB 30 head ptr ptrpos oldptr head ptrl uval lschild point to the head of field list ptr head whi le ptr Initialize dfi values to strcpy ptr gt fval ptr ptr gt Next ptr head while ptr wclear msg win wrefresh msg win wmove nain win ptr y ptr x wrefresh win getyx main win y x wget field main win DVAL ptr gt dtype ptr gt dmin ptr THRU FALSE whi le ft THRU if EQUALS bI_sup ptr1 gt SetiD MSGID amp amp ptr gt fdno 1 strcpy ALIAS upstr DVAL while acckey msg bl pad ALIAS 10 print imsg WARNING ILLEGAL Message wmove main_win y X wrefresh main win wget field main win DVAL ptr dtype ptr dmin ptr dmax L ptr fdcat strcpy ALI AS upstr DVAL 4 gfield mno MNO 0 gfield mtitle TITLE TITLE 30 0 strcpy ptrO MsgNo if EQUALS ptr gt fdcat M while EQUALS b1 sup DVAL NO print_imsg This field is MANDATORY wmove main win y x wrefresh main win nget field main_ win DVAL ptr dtu ptr dmin ptr dmax L ptr fdcat while VALID blI sup DVAL ptr gt notype dsp c wre FNO Oct 30 10 51 1986 Page 12 print imsg The valid data
7. 6 9 9 9 b 9 99 99 9 1 7 Files handlerror c Page 19 HandleError 249 4 E 19 File hashtime c Page 20 HashTime eee rere 20 Files high c Page 22 High ew rere es S qaa eq ee a es os 22 File hold c Page 23 23 File makecc c Page 25 MakeCC 08 99 9 9 9 9 9 9 9 9 s Sis 25 File mpmail c Page 26 MPMail EU odd bd c Le eee eee 26 File msgproc c Page 27 sx rre 27 USAGE queis XE es ere eee eee ee a dune es 30 SHULUOWHA Te 30 File process c Page 3 Process 9 9 9 6 9 6 60 9 9 e GO ee 31 Table of Contents Thu Oct 30 10 52 03 1986 File putmsg c Page 34 PutMsg 8 4 9 9 9 Bh 5 9 9 9 9 9 9 58 8 3h File recover c Page 35 Recover sich c UR C C us DS 35 File reroute c 38 ReRoute aa xu eee ded File rmhdr c Page 40 Pe 40 File save c Page 41 SICCO E Nae ee ere pa 51 File timetest c Page 42 wu bb d NEA Nd 42 File transfer c Page 43 TRANS
8. Port Management E Communications Protocol 1 Hardware Issues seh aS 4 0 TACCNET Prototype Specification eee RT RETE 4 1 System Requirements A 4 1 1 4 1 2 4 1 3 4 1 4 Hardware E ps Operating Systems TUM T TE PER Communications Equipment Mua dud READS Software IQ 4 2 TACCNET System uius 4 2 1 4 2 2 4 2 3 4 2 4 User Interface voc t UN hs Communications MU RIEN T M Message Processing oven dedu e E E Database Operations UNS e d iios we 4 3 TACCNET Installation and Operation 2 2 1 iij ee 4 3 1 4 3 2 4 3 3 4 3 4 Installation and Configuration is Initialization MEM LTEM IRE Monitoring
9. ams c ur MESSAGE ENTRY SYSTEM This is the main routine desededededesese de fefe dede dese defe de dee de fee fefe e fede fee dee dese dede dese fefe fe desi e seve aleve dee ae sk se sede sk de de de dese dese main i char labell 16 1abe12 7 char option 5 EXER or OPER char ALEXER I 1 message alias for EXER char ALOPER 11 message alias for OPER char ALELSE 11 message alias for OTHERS addOnode labell label2 fprintf stderr n Enter EXER or OPER gt scanf S Nn c option if EQUALS bl_sup option EXER DORT strcpy ALEXER ITXT EXER SET Handler ALEXER Build up Introductory Text Sets for EXER else if EQUALS 51 _ option OPER 1 EQUALS bl sup option ams c Oct 30 10 50 1986 Page 13 i strcpy ALOPER ITXT OPER SET Handler ALOPER Build up Introductory Text Sets for OPER else strcpy ALELSE ITXT_ELSE SET Handler ALELSE Build up Introductory Text Sets for OTHERS SET_Handler ALIAS Build up Main Text Sets of Message ifdef DEBUG display 0 endif convert end of main SET Handler E SSS SSeS Ses SS SSS SSS 35 SET Han
10. K 2 Read field if the input is within the valid range 2 ll 1 T il ll lt wget field win str OTYPE DMIN DMAX SETTYPE WINDOW win 52 scr c Oct 30 10 51 1986 Page char str char FCAT int SETTYPE int DMIN DMAX int LINE COL int c int i 0 int DONE 0 getyx main win LINE COL while cswgetch win DEL amp amp t swi tch case Nb if y gt 0 waddch win waddch win waddch win else putchar BEEP wrefresh case ESC getyx main win y x command handler break break case r str i NO i f 1EQUALS amp amp EQUALS b sup str 0 DONE else if i lt DMIN getyx win LINE COL wclear msg win wmove msg win 0 0 wprintw msg win WARNING Range and Type of Input is 558 DMIN DMAX DTYPE putchar BEEP wrefresh msg win wmove win LINE COL wrefresh win else DONE 1 break default m DMAX getyx win LINE COL wclear msg win wmove nsg win 0 0 wprintw msg win 53 scr c Oct 30 10 51 1986 Page 54 WARNING Range Type of Input is 55 DMIN DMAX DTYPE putchar BEEP
11. 3 position of the CCFLAG in Priority line f def ine CCPOS Hayes Smartmodem 1200 commands and responses define def ine define define define define define define ESCAPESTR HANGUPCMD RESETCMD NOANSWER DIALSTR SETUP ATTENTION OK 0 ATHNr 11911 ATD EO 00 VO r AT r files and directories used by the system fldef ine fldef ine define define define define define define define define define define define MASTERQ bin PRIORQ priority MSGPROCQ SERVERQ serverq ERRORQ errorq ARCH IVEQ archive PATHTABLE tables paths SITETABLE tables sites NEWSITETABLE tables sites new OLDSITETABLE tables sites old PORTTABLE tables ports ALTSITES tables altsites 7 net h Oct 30 10 50 1986 fdefine f def ine fdefine define programs loaded by define define define define def ine define define system constants def ine define define def ine define def ine define def ine typedef typedef typedef typedef sitename SiteName Status NumCalls short short ong char MYNAME PARAMFILE PASSWDFILE INTFILE OCONTROL OCNTRLH CALLER QMS MSGPROC GENMSG SERVER MAXDOWNSITES MAXALTSITES MAXPHONENUMS PROGNAMELEN SI TENAMELEN FILENAMELEN PATHNAMELEN LINELEN tables mynam
12. destination path is DestPath recover c Oct 30 10 52 1986 Page 37 StripMe DestPath DestSite get the name of the next site if EQUALS DestSite Site if msg is for the given site sprintf QueuePath s s MSGPROCQ Entries i if link FilePath QueuePath GOOD WriteLog Recover queued FilePath for Site else WriteLog can t link FilePath to QueuePath free Entries return GOOD reroute c Oct 30 10 52 1986 Page 38 include net h extern int DebugLevel ReRoute Perform the high level rerouting of messages in the case that a site is down and a message needs to be sent to an alternate site int ReRoute MsgFi leName char MsgFileName header MsgHeader Message header information header GetMsgHead function to get message header info sitename AltSites MAXALTSITES 1 List of alt sites for down site sitename NewSi te Site chosen for rerouting char BadSites List of bad sites FILE MsgFileFd Pointer to original message file int Result Result code from lower lever routines register int Done FALSE register int Found FALSE register int 0 register int j register int x 0 if MsgFileFd FileOpen MsgFileName MSGPROCQ r NULL t WriteLog Can t open message file MsgFileName return ERR Try to recov
13. dte 5 File validpath c Page 6 EEE eee ee 6 Makefile Oct 30 10 51 1986 genmsg genmsg o validsite o validpath o myname o fi lenq o writelog o datetime o newfile o fileopen o lockfile o readsite o stripme o cc 0 o genmsg genmsg o validpath o myname o writelog o datetime o newfile o filenq o validsite o fileopen o lockfile oN readsite o stripme o strip genmsg genmsg o net h genmsg c c 0 genmsg c validpath o net h validpath c cc c 0 validpath c Page 1 genmsg c Oct 30 10 51 1986 Page include net h define TEMPFILEHEAD gen define MAXSITES 20 pathname LogFile global LogFile for genmsg routines GenMsg is a program to generate messages for transmission by qms t expects a priority as parameter 1 followed by a list of destinations There must be at least destination given It will read the message body from stdin and build a message file or files which will be placed in the message processor queue Stdin may be redirected to read from file or pipe Input may be text or binary data Multiple destination paths or sites may be specified on the command line They should be separated by one or more spaces All messages will be given the same priority The destination may be given as a path alias an absolute path or a path alias with an absolute path appended The last token in the path may be a use
14. NULL fscanf ParamFileFp Xs d n Key amp Value while feof ParamFileFp amp amp ferror ParamFileFp if EQUALS Key 11 PollDelay Value fscanf ParamFileFp Key amp Value else WriteLog Server One Pass mode in ServerQueue SiteName do non terminating process loops to scan input queue if Abort ShutDown Shut down if requested while NextMsgName DeQueue SiteName NULL if Abort Check inside loop as well ShutDown Shut down if requested WriteLog Server Next message is NextMsgName if MsgFileFd FileOpen NextMsgName SiteName r NULL WriteLog Server can t NextMsgName continue on to next message read in the message priority and return address for use below while c getc MsgFileFd HEADERLINE SkipEOL MsgFileFd fscanf MsgFileFd s Priority SkipEOL MsgFileFd SkipEOL MsgFileFd MsgFileFd fscanf MsgFileFd ReturnPath SkipEOL MsgFileFd get the message priority Skip to the next line skip the destination line skip the headerline character get the return address Skip to the next line this code will skip over any following header lines while c2getc MsgFileFd HEADERLINE SkipEOL MsgFileFd
15. PortTableFd EOF NumPorts SkipEOL PortTableFd PortList portlist malloc NumPorts l sizeof portentry rewind PortTableFd for i20 cegetc PortTableFd EOF amp amp i lt NumPorts i PortList i portentry malloc sizeof portentry fscanf PortTableFd 55 45 c Port Site amp x PortListfi Port malloc strlen 1 strcpy PortList i Port Port PortList i Site malloc strlen Site 41 strcpy PortList i gt Site Site State int x State amp MASK Bill this does not work on ONYX PortListLi gt State State SkipEOL PortTableFd goto next entry PortListLi NULL set end of list marker fclose PortTableFd return PortList good return code int ValidPort PortName char PortName Returns TRUE if PortName is defined in PORTTABLE FALSE otherwise portlist PortList register int i Found if Lock PORTTABLE ERR WriteLog ValidPort Can t lock PORTTABLE return ERR if PortList GetPorts NULL ports c Oct 30 10 50 1986 Page 32 WriteLog ValidPort can t read port list m UnLock PORTTABLE return ERR for i20 Found FALSE Found 66 PortListLi NULL i if EQUALS PortList i Port PortName Found TRUE PSFree PortList UnLock PORTTABLE return Found void
16. 100 liters of BOG90 1 We expect many of these problems to be ironed out in future revisions of the JIN TACCS standards In any event it is desirable to minimize and if possible avoid message specific code in the database server system 3 2 4 Message Generation Messages may be generated by users or by processes running on the CSSCS machine These messages will travel through the network following some path to their destinations It will be necessary to maintain an audit trail for each message so that it can be tracked through the system This requires that each message be uniquely identified across the entire network We have already required that each node be uniquely identified If we use the identifier of the node at which a message originates as part of the message identifier we need only sequence the messages on each node in order to uniquely label each mes sage An example of this would be a message generated at a site named bravo which would have an identifier of the form Xbravol 2345 where X is an indicator of message type email JINTACCS administrative etc and 12345 is the sequence number of the message assigned at the time of creation The sequence number must be large enough so that it does not roll over too often which would allow duplicate names The sequence number could be generated from the system clock or from a global variable which would be incremented after each new message is created The message id
17. SET Handler Set Level or Level 1 _ _ _ _ _ _ _ _ _ _ SET Handler ALIAS Build up Main Text Sets of Message char ALIAS i char CAT 4 cat char SETID 9 set id struct char SALIAS 10 int SNO SETKEY retrieve each SetiD in the order of set no add set node strncpy SETKEY SALIAS bl pad ALIAS 10 10 for SETKEY SNO 1 acckey sets amp SETKEY 0 SETKEY SNO i gfield scat CAT CAT 3 0 gfield setid SETID SETID 8 0 Manage the set according to its type if SETIO O gt O 56 SETID O lt 9 columnar set CSET_mgr SETID bl sup CAT else if EQUALS Bl sup SETID EQUALS SETID NARR EQUALS SETID RMKS free text set FSET mgr SETID bl sup CAT else linear set LSET mgr SETID bl sup CAT t Columnar Set Manager Level CSET mgr SETID char SETID char CAT t wclear main win y 0 mvwaddstr main_win y 0 SET ID jms c Oct 30 10 51 1986 Page waddstr main win SETID wrefresh main win addlnode C CAT SETID FI
18. 5 Origin set destination path and target file name if strlen DestPath 0 then destination was omitted SaveName FileName default target name source name Destination Origin default destination is request origin else set target file name and destination path if SaveName strrehr DestPath SEPCHAR NULL SaveName 0 separate destination path and target filename SaveName point to start of file name transfer c Oct 30 10 52 1986 Page 1 Destination DestPath set pointer to destination path else only a target filename was supplied Destination Origin default destination is request origin SaveName DestPath use target name supplied sprintf Address s c s Destination SEPCHAR NETADMIN sprintf Command Ss bin s 5 1 gt dev null 2 61 MASTERQ GENMSG Priority Address if PipeFd popen Command w NULL WriteLog Transfer cannot open pipe Command return ERR make sure the desired file exists and is readable if FileFd fopen FileName r NULL open the file WriteLog Transfer cannot access FileName fprintf PipeFd could not access 5 at site s n FileName ThisName free ThisName if pclose PipeFd GOOD i WriteLog Transfer error executing Command return ERR WriteLog Trans
19. gfield fcat FCAT FCAT 3 0 gfield fmame FNAME 0 NO gfield fdfi DFI 5 0 jms c Oct 30 10 51 1986 Page 31 gfield fdui DUI DUI 3 NO mM case C columnar set gfield fcol SCOL_J SCOL J 3 0 DFI handler C DFI DUI SETID FLDKEY FNO FCAT break case L linear set handler L DFI DUI SETID FLDKEY FNO FCAT break case addscr_csf ptr1 gt uval cschi ld addscr csd break case L addscr lIsf ptrl uval lschild 15 break DF Handler DFI Level or Level 3 DFI handler KIND FDF FDUI SETID FDNO FCAT char KIND char FDFI X FDUI char SETID char FCAT int FDNO char LRJ 2 char NOTYP 11 struct char OFI 6 char DUI 4 DFIKEY retrieve NO TYPE from dfis relation and add it to the field strcpy OFIKEY DFlI FDF strcpy DFIKEY DUI FDUI if acckey dfis amp DFIKEY jms c Oct 30 10 51 1986 Page 32 wmove msg win 2 0 wprintw msg win 80s dfi not found 1 wrefresh msg win gfield dirj LRJ LRJ 1 O gfield dformat NOTYP NOTYP 10 50 77 case C gfield dcolhdr CHDR CHDR 23 NO add csf bl_sup FCAT bl_sup FNAME b _sup bi sup SCOL sup LRJ bl sup NOTYP break case L gfield dfdesc FDESC
20. dsp_free_set ptr inp c Oct 30 10 50 1986 Page 37 include ams h Read in free text readtxt longtext char longtext i register int i20 register int len 0 register int DONE FALSE char tempbuf 81 DEAD FALSE fprintf stderr Xn Enter free text and terminate with n while DONE if scanf 4 tempbuf 0 continue len str len tempbuf if EQUALS tempbuf len 2 DONE TRUE tempbuf len 2 0 if strlen bl sup tempbuf 0 DEAD TRUE longtext i malloc 1 1 strcpy longtextLi tempbuf i longtext i NULL CONSOLE This section contains the functions used only by the screen oriented TACCNET monitoring pro gram CONSOLE Table of Contents Thu Oct 30 10 51 19 1986 File Makefile Page File console h Page 3 File wait h Page 6 File addcolumn c Page 7 AddColumn ba Lad i EE 7 File admin c Page 8 Admi n 9 9 9 9 fF 8 File changed c Page 10 Changed 5 5 2 Cao i ud es 10 File changespeed c Page 11 CHANGES DCEO Quee adr AUR 11 File clear c Page 12 LISSE ada RA X EPEE EEE 12 File close c Page 13 GLOSS jc dr E OE I RS a bcati o sca 19 Fife closewindows c Page 14 ClOSeW ndOWS TR
21. exit GOOD else if ResponsePacket CAN WriteLog WaitAck remote system shut down suddenly connection terminated exit GOOD else ResultStatus NAK Differentiate from ERROR and error if ResponsePacket NULL free ResponsePacket Get rid of unneeded storage return ResultStatus PATH ZSYS72 gt UDD gt GOLDBERG UNIX gt WAITEN C TIME 1987 02 12 1728 27 3 include net h finclude iocontrol h finclude iocontrol e WaitEnq wait for an enquire signal from remote system and return error status if timeout occurs Send acknowledgement signal if enquiry received This establishes synchronization with remote after local system is activated int WaitEnq unsigned char ResponsePacket From getpacket allocated therein int PacketLength Needed for call to getpacket unused register int Count 0 retry counter while Count lt MAXRETRY if ResponsePacket GetPacket amp PacketLength NULL if DebugLevel WriteLog WaitEnq Timed out waiting for else if ResponsePacket ENQ break else free ResponsePacket release storage FlushModemInput ModemFd if Count gt MAXRETRY WriteLog WaitEnq Did not receive ENQ packet SendByte Make sure remote understands WriteLog WaitEnq Bad connection Goodbye BADCONNECTI
22. ifdef FORHONEY endif if TempBuf i r TempBuf i Convert CR to NL receiving from Honey fputc TempBuf i FileFp Write the next character MsgLength BlockLen Keep track of length of entire message if ETXFlag ETX break Leave the loop if end of text received free TempBuf Get rid of storage allocated at top of loop fflush FileFp fclose FileFp Write the complete file if Find out why we left while loop TempBuf NULL e ETXFlag ETX UM TempBuf Let it go WriteLog GetFile file FileName received OK FileNQ FileName MSGPROCQ Give the file to msg proc return NULL else if BlockLen EOT An end of transmission was received i WriteLog GetFile EOT received but not expected WriteLog GetFile FileName not saved sprintf TmpFileName FileName Remove TmpFileName MSGPROCQ Get rid of it return INTERRUPTED Indicate we were interrupted else if BlockLen CAN The remote system shut down suddenly WriteLog GetFile CAN received remote aborted WriteLog GetFile FileName saved 1 sprintf TmpFileName s FileName Remove TmpFileName MSGPROCQ Get rid of it return ABORTED indicate remote system aborted else if BlockLen MYEOT We sent an EOT because of preem
23. int pat EOF iocontrol h Preemption return boolean value indicating whether or not the current queue has been interrupted so that a higher priority message can be sent to another system via the line in use for the file INTFILE in the given queue directory Preemption queuename hname queuename Name of directory to check for INTFILE file FILE p Temporary file pointer to be released if successful pathname IntFileName Storage for complete file path sprintf IntFileName Zs s queuename INTFILE Construct if fp fopen IntFileName r NULL The file was not found or else we have a bad problem Say return FALSE Indicate no need to relinquish line fclose fp Make sure we close the file return TRUE Indicate that we have agreed to terminate Check path no PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt READBU C TIME 1987 02 12 1702 06 7 finclude iocontrol e ReadBurst read a burst of information from the modem port Given Asynchronous configuration of Honeywell ports assume that a burst will end in which will be in the buffer and that a read will not exceed given character limit int ReadBurst buffer maxsize unsigned char buffer int maxsize return read ModemFd buffer maxsize EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt RECEIV C TIME 1987 02 12 1705 59 7 finclude
24. config i Use only some mverse video functions this terminal does not perform inverse video well Use absolutely no inverse video this terminal cannot support inverse video n Do not prompt the user to start the TACCNET system 1f itis down 8 sysname windows 1 and to monitor the system given by sysname X Do not use the previous system configuration and do not automatically save the configuration after this session 4 3 5 2 User Interface Menu Commands While presenting the contents of system queues and log files in its four static windows the console program displays a command menu at the bottom of the screen with which the user can control the operation of both the TACCNET sys tem and the User Interface Because a typical terminal screen is small and too many menu items might be confusing to the novice user the set of possible user commands is divided between two menus These menus are divided by function so that one menu is for TACCNET interaction and the other is for User Interface interaction The TACCNET interaction menu contains commands that primarily affect and interact with the TACCNET system The User Interface interaction menu avails the user of commands to tailor and manipulate the operations of the con sole program environment including opening and closing windows and redraw ing the screen A description of the commands in each of these menus is given below When the con
25. move messages to appropriate system queues and schedule priority callers for appropriate sites no messages messages found check for messages in system queues gt schedule a caller for each system with messages in its queue routine priority no messages check for shutdown command or scan mode one pass continuous one pass mode or scan mode shutdown command no shutdown recieved command received Schedule site name get site name and priority rom qms priority level ae conversation found check for existing port table 2 conversation with desired site o port table got a port no available ports priority messages routine message get a port to use for caller no available ports got a port try to pre empt a routine call and sieze its port invoke a caller for desired site with given priority level port table update port table to show status of port exit and wait for port Caller sitename gt get arguments from user foren or qms invocation LZ lock site queue and reset modem on given port for debug level dialout operation HR efe get phone number and login information from site table cM PRAE site table use modem to call remote ee site and est
26. 1 char DOWN RETRY struct site typedef i struct char Port char XSite int State portentry typedef define define define define define define define define define define define define Page 0 2 site table entry name of the site up down priority busy number of times we called so far don t call before this time operating system type password for taccnet login array of phone numbers to try port table entry port name unix path name remote site name if connected port state Available Routine Priority portentry portlist LQMS qms LCK LMSGPROC msgprocq LCK LSERVER bin server LCK SITETABLE tables sites PORTTABLE tables ports UpDown flag flag down EMULATED 1 8 2 34 TOP3 61 COLI 6 COL2 16 50 status c Oct 30 10 51 1986 Page define COL3 27 define COLL 39 Status check to see whether or not the system is up and running in the current queue Do this by expecting a LCK file for each process expected to be running If the input parameter is TRUE make a point of displaying the results on the screen otherwise return TRUE or FALSE if the system 15 up or down in that order int Status display int display Flag indicating whether or not to display the results i int
27. Header information structure to be returned static header HeaderStruct sitename Site pathname Path int 0 int char Line LINELEN T1 header Header nfo amp HeaderStruct Make sure file is positioned at top rewind MsgFileFd Read first header to get priority and CC flag read in the priority string GetLine Line MsgFileFd file is now positioned at the start of the destpath line if Line O HEADERLINE Writelog GetMsgHead Message header is invalid return header NULL Try to recover Headerlnfo gt Priority atoi Linetl convert priority to int if strlen Line gt CCPOS amp amp Line CCPOS CCTYPE gt CCFlag TRUE This is a courtesy copy else Header nfo CCFlag FALSE Read all the previously tried sites fscanf MsgFileFd S c s n Path read the path StripMe Path Site get the first site if gt DownSites i NULL free Headerlnfo gt DownSites i Header nfo gt DownSites NULL getmsghead c Oct 30 10 51 1986 Page 18 Headerinfo gt DownSites i malloc strlen Site 1 strcpy Headerlnfo gt DownSites i Site copy the site SkipEOL MsgFileFd Ignore the trace back full path while fgetc MsgFileFd HEADERLINE amp amp i MAXDOWNSITES i SkipEOL MsgF
28. Key amp Value fclose ParamFileFp MasterMode TRUE This is the master else slave mode ModemFd SetPort dev tty Treat terminal as remote mode SLAVEINIT Enter INITIALIZATION as SLAVE MasterMode FALSE This is the slave signal SIGTERM ShutDown Set interrupt handler routine Main loop perform tasks depending on current mode while mode HANGUP i switch mode case MASTERINIT sprintf Logfile log s log RemoteName iocontrol c Oct 30 10 51 1986 Page 20 if DebugLevel WriteLog lOControl assuming MASTER mode WaitEnq 0 Wait for enquire send ACK if DebugLevel WriteLog enquire received and acknowledged 9 SendName Send system name wait for ACK WriteLog lOControl MASTER connection established RemoteName mode SENDMODE Enter send mode break case SLAVEINIT if DebugLevel WriteLog lOControl assuming SLAVE mode 0 ifdef FORHONEY sleep 15 fendi f SendEng Send ENQ signal wait for ACK if DebugLevel WriteLog lOControl enquire sent acknowledged RemoteName Wait for remote id send ACK if DebugLevel WriteLog lOControl ID packet received from RemoteName sprintf LogFile log s log RemoteName WriteLog lOControl
29. Path is not absolute sprintf FileName tables s Temp Construct file name else strcpy FileName Temp Copy file name as is Throw the user into the editor addstr x refresh clear addstr Please stand refresh echo nocrmode signal SIGINT SIG IGN if fork 0 0 This is the child process signal SIGINT SIG_DFL if Editor getenv EDITOR char 0 Editor malloc strlen DefaultEditor 1 strcpy Editor DefaultEditor exec Editor Editor FileName 0 fprintf stderr cannot load editor n fprintf stderr Define the environment variable EDITOR fprintf stderr to be the pathname to your editor n fprintf stderr n n nPress CR to continue admin c Oct 30 10 50 1986 fflush stderr getchar exit 0 else wait int 0 signal SIGINT ExitProcessor noecho crmode ReDraw Put things back the way they were Page changed c Oct 30 10 50 1986 Page 10 include console h include lt sys stat h gt Changed return TRUE if the given window structure s file has been modified according to its last modification time FALSE otherwise int Changed num int num Window number of window to be checked i struct stat buf Storage for result from stat 2 call int Result Return value T
30. if Done We didn t find a good alternate site WriteLog ReRoute Could not find a working alternate site n Bs MU ac return ERR 5 Otherwise we found a good alternate site so forge ahead strcpy NewSite AltSites i Forward the message to NewSite Result Forward MsgFileFd NewSite MsgHeader gt Priority if Result ERR WriteLog ReRoute Could not construct message to NewSite for MsgHeader DestSite return ERR Recover by ignoring but saving this message Send a Courtesy Copy for the downed site Result MakeCC MsgFileFd NewSite MsgHeader gt Priority if Result ERR WriteLog ReRoute Could not construct courtesy copy for NewSite ae return ERR Recover by ignoring but saving this message fclose MsgFileFd return 6000 No errors reroute c Oct 30 10 52 1986 inctude net h main register int while c getc stdin HEADERLINE SkipEOL stdin pute c stdout while getc stdin EOF pute c stdout Page LO save c Oct 30 10 52 1986 Page 41 finclude 42 Command line format save filename Read a filename from the given message file stream and save the body of the message in that file int Save Fd FILE Fd FILE NewFd pathname FileName sitename Destination register int c skip to start
31. 11 This file define the type of UNIX system to be used Un comment one and ONLY one of the following lines define XENIX for microsoft XENIX systems ine XENIX V for SCO Xenix V define both this and XENIX k define DISTRIX for Convergent Technologies DISTRIX systems s def ine ONYX for ONYX systems wait h Oct 30 10 50 1986 Page 12 Structure of the information in the first word returned by wait If stopval WSTOPPED then the second structure describes the information returned else the first als 7 union wait int w_status used in syscall Terminated process status struct unsigned short w Termsig 7 unsigned short Coredump unsigned short w Retcode 8 wT Stopped process status struct unsigned short 5 1 8 unsigned short Stopsig 8 5 termination signal core dump indicator exit code if w_termsig 0 W STOPPED if stopped signal that stopped us define WSTOPPED 0177 value of s stopval if process is stopped abort c Oct 30 10 50 1986 Page 13 include net h define ABORTFILE abort Abort Return whether or not the file abort exists indicating that the current system should be shut down The abort file will be deleted only once the system is restarted int Abort masterq char masterq Queue in which AB
32. See if remote sends an acknowledgement if Result NAK i WriteLog SendName BAD SITE NAME remote does not know Exit BADCONNECT ON else if Result ERR 4 WriteLog SendName TIMED OUT waiting for second Exit LOSTCONTACT Simply returning indicates success Errors are fatal causing exit sendpacket c Oct 30 10 51 1986 Page 37 include net h include iocontrol h include iocontrol e SendPacket construct a packet with checksum using DLE as a data link escape symboi precedes ETX ETB The parameter indicates if this is the end of a message or if there is more to come int SendPacket data length end unsigned char data Pointer to character data binary permitted int length Length of packet to transmit int End of text flag i unsigned char Packet Must allocate storage in this routine int Ptr Pointer into packet int Code Checksum code returned int 1 ifdef DEBUG FILE tmpsfopen usr taccnet log proto log fendi f Packet unsigned char malloc length PKTOVERHEAD Reserve data if Packet NULL WriteLog SendPacket OUT OF MEMORY allocating for packet Exit INTERNALERROR sprintf Packet 5 2 SeqNo Encode packet number ASCII hex Packet 2 STX for i 0 i lt length i Copy data section int
33. extern declarations for global variables extern extern extern extern extern extern extern extern extern extern extern extern extern extern extern extern extern extern int int int char char char char char char char 11510 11510 11611 snode snode col DEAD getout ALIASL MNO TITLEL I FNAME 5 SCOL J A CHOR we head ptrO taills csfieldnode tailcsf csdatanode tsnode tailcsd tailts number of columns for Indicator for no text Indicator indentation data field identifier start column Page 2 ams h Oct 30 10 50 1986 Page constants and definitions for message entry system include lt stdio h gt include lt curses h gt include lt signal h gt define EQUALS Istrcmp define MAXLINES 20 struct IstO_str char mtagli 16 mno 5 char mtag2 7 mid 11 struct 1510 str struct ist str schild struct 1511 str char settyp char setid 9 struct 1510 str struct 1511 str union struct Isnode_str struct csnode_str struct tsnode_str uval parent struct lsnode str char 11 char fdesc 9 char fval 25 char j2 char 11 struct Ist str struct lsnode str 12 parent prev next prev next ischild cschild tschi ld prev next f
34. if Window O Fp FILE NULL fclose Window 0 Fp Window Ol Fp FILE NULL Enforce such conditions if Window 2 Fp FILE NULL fclose Window 2 Fp Window 2 Fp FILE NULL Ditto for window 2 ReDraw open c Oct 30 10 51 1986 Page 32 include console h define BAD 1 Open Define a window to be updated with either a queue list or a log file tail void Open i int WindowNum Number of window to be opened char 80 Temporary string storage CmdPrompt Window number to open 1 4 Temp 2 if strlen Temp WindowNum atoi Temp Convert to integer else WindowNum BAD Response was in error if WindowNum BAD amp amp WindowNum gt 0 amp amp WindowNum lt 5 e if GoodWindow Wi ndowNum if portano f FILE NULL fclose Window Wi ndowNum Fp Window WindowNum Fp FILE NULL if lsLogWindow Wi ndowNum i CmdPrompt Enter system name for log window Temp 10 if strlen Temp Wi ndow Wi ndowNum Good TRUE if Temp 0 sprintf Window WindowNum Name log S s log Temp else strcpy Window WindowNum Name Temp else WindowNum BAD else CmdPrompt Enter system queue name to be monitored Temp 10 if strlen Temp Window Wi ndowNum Good TRUE Window WindowNum Name Temp else WindowNum BAD
35. include net h extern int ModemFd extern int DebugLevel int SetHayes PortName char PortName Set the command modes and switches the Smartmodem 1200 Test the modem to see if it will accept commands and give proper response Return GOOD if all s well ERR otherwise register int i int c char str 80 FlushModemInput ModemFd Be sure buffer is empty if write ModemFd SETUP strlen SETUP 0 WriteLog SetHayes can t write setup string to PortName return ERR FlushModemInput ModemFd Be sure buffer is empty if DebugLevel WriteLog SetHayes wrote SETUP string to PortName try to talk to the modem for i20 i 10 i write ModemFd ATTENTION strlen ATTENTION switch c Receive case ERR WritelLog SetHayes no response to ATTENTION signal ws break case OK FlushModeminput ModemFd if DebugLevel WriteLog SetHayes modem responded to ATTENTION signal Ms 9 return GOOD default sprintf str c WriteLog SetHayes modem answered ATTENTION with str MS break FlushModeminput ModemFd Be sure buffer is empty WriteLog SetHayes Cannot establish rapport with modem PortName 1 return ERR 22 IOCONTROL This section contains the functions used only by the IOControl program IOCONTROL Table of Contents
36. while c getc OldFp EOF copy the file putc c NewFp fclose OldFp close the files fclose NewFp close Fd return TRUE datetime c Oct 30 10 50 1986 Page 15 include net h include lt time h gt DateTime Construct a string containing the date time header for each line to be written to the log file int DateTime Str char Str long BDate struct tm Time Structure for detailed date time information struct tm localtime BDate time long 0 Time localtime amp BDate Get date time information sprintf Str 2d 2d 2d 4 2d 2d 2d Time gt tm_montl Time gt tm_mday Time tm hour Time gt tm_min Time gt tm_sec return 0 dequeue c Oct 30 10 50 1986 Page 16 net h DeQueue Return the name of the first message in the input queue opened via GetDir Return NULL if the queue is empty char DeQueue MsgQueueName char MsqQueueName static filename MsgFiles Pointer to list of files in the queue static int CurFilePtr 0 Index of current filename static pathname QueueName Name of the current queue if list exhausted or new queue read again for more file names 1EQUALS MsgQueueName QueueName CurFilePtr 0 MsgFiles CurFi lePtr NULL MsgFiles GetDir MsgQueueName reload directory listing strcpy Queue
37. Administer files in tables Admin break case PORTS Display current ports table DispFile tables ports break Case SITES Display current sites table DispFile tables sites break case COMMAND Run a shell command j CmdPrompt Enter TACCNET command Temp 80 if strlen Temp jerform c Oct 30 10 51 1986 Page 35 RunShell Temp TRUE break case SHELL Let user execute a subshel ends with UserShel break case STATUS Monitor system status addstr x Sticky inverse video bug wclear Command wrefresh Command refresh clear 0 refresh if CurScreen SSTATUS CurScreen SSTATUS else CurScreen SWINDOWS Return to main windows for i 2 i lt h4 j if WindowLi Fp NULL fclose WindowLi Fp Window i Fp NULL Window i LastPos OL wclear Window i Win ReDraw break printborder c Oct 30 10 51 1986 Page 36 include console h define BORDERCHAR c GoodTerminal 1 flag c define BORDERCHAR c GoodTerminal 1 flag c PrintBorder Given a window number place a border around it on the standard window screen If parameter flag is FALSE erase the border void PrintBorder num flag int num Window number of window to have border drawn int is if flag amp amp GoodTerminal
38. Initialize a pointer to top level linked list initser crmode noraw 0 noecho signal SIGINT die main box win newwin 20 80 0 0 main win newwin 18 76 1 2 maincom win newwin 2 80 20 0 command win newwin 2 80 20 0 msg win newwin 2 80 22 0 wstandout msg win view box win newwin 11 75 8 2 view win subwin view box win 9 70 9 4 help win newwin 20 80 0 0 helpcom win newwin 2 80 20 0 3 scrol lok main win TRUE Frame main_box_win header main box win JINTACCS MESSAGE SYSTEM 1 footnote main box win Press ESC key to Switch Mode INPUT lt gt COMMAND 1 wrefresh main box win box view box win EE header vi ew_ box win JINTACCS MESSAGE OUTPUT Di wmove ma incom 0 0 wprintw maincom win Type to leave the current set if it is optional wmove help win 0 0 wprintw help win x HELP Window wmove help win 2 0 1 COMMAND Menus wmove help win 3 3 wprintw help win Create Create a new message wmove help 3 help win Movewin Move VIEW window wmove help 5 3 win Print Make hard copy of the current message wmove help win 6 3 wprintw heIp win Quit Quit the Message System wmove help 7 3 wprintw help win Save Sa
39. Maj J Morrison and Maj Case Signal vol 38 no 3 pp 55 58 November 1983 JINTACOS getting the message across Maj A Schenk Army Communicator Winter 1986 pp 12 20 Secure is Secure G Grossman UNIX Review August 1986 pp 50 63 CSSCS Advanced Experimental Demonstrations Final Technical Report for 1983 84 A Jensen W Putnam 5 Goldberg Georgia Institute of Technology July 1984 CSSCS Advanced Experimental Demonstrations Final Technical Report for 1984 85 A Jensen W Putnam 5 Goldberg Georgia Institute of Technology December 1985 Considerations in the Design and Development of a Combat Service Support Computer System A Jensen W Putnam S Goldberg Georgia Institute of Technology December 1986 Technical specification and user s manual for the TACCNET system 30 TACCNET G36 633 Final Technical Report April 28 1987 Appendix 1 Areas for Further Investigation Development of a JINTACCS Message Parser Examine and develop a working version of a JINTACCS message grammar using a well defined subset of the ACCS COMS Apply UNIX tools eg yacc lex to develop a parser for messages incorporate parser into a system which would use knowledge about the messages and their users expert system to aid in construction routing and processing of JINTA CCS messages Analysis of DSS requirements and Applications Identify users sources applications of information availab
40. REROUTETYPE F _ Ic H NOPATHTYPE 5 PRIORTYPE ROUTINETYPE R AVAILABLE Fu ADD CHANGE UE DELETE EXAMINE RECOVER tp net adm name of network administrator process JINTACCS message for server normal message type user mail message type message is mangled somehow message got a NAK on transmission network adminsitrative message message is to be rerouted courtesy copy message message with bad header message with invalid path specification high priority message routine message port available flag add a site to the site table change existing site delete a site from the table get the status of a site recover old messages from archives net h Oct 30 10 50 1986 define SAVE define TRANSFER Convenient function definitions define EQUALS strcmp define FlushModemlnput fd define NOW time long 0 System constants define define define define define define define define define define define define DOT F ELDMARK SEPCHAR DELCHAR HEADERLINE CRET NL TAB BLANK CR ONE ZERO Page 15 save message contents into named file request of a file be transferred define SkipEOL fint while c2getc fd 2 Nn 66 c EOF ioctl fd TCFLSH 0 lel gt At 15
41. Remote system identification Broadcast and message rejection Failure detection and management o File transfer o Electronic mail o JINTACCS to and from C2 database o Automated JINTACCS message composition interface o Distributed C2 database backup and recovery o Single machine emulation of multiple nodes o Network management functions via messages o Dynamic network configuration Screen oriented menu driven user interface o Message forwarding holding o Store and forward message transfer o Automatic routing via shortest path _ Objectives O O Pass JINTACCS messages Detect and handle failures Automatic re routing Dynamic network configuration Messages to and from C2 database Database backup and recovery User interface JINTACCS message composition aids TACCNET Constraints Ordinary telephone lines 1200 bps transmission rate Auto dial auto answer modems Media transparency TACCS UNIX DAS3 GCOS TACCNET Additional Features Error detection and recovery Data transparency Binary data transfer Store and forward capability O Priority scheduling o On line JINTACCS message dictionary Password security o File transfer o Electronic mail o Multiple node emulation Tunable system parameters O Portability all code written in C language o Menu driven system interface TACCNET Composition Communications qms
42. SITETABLE take some action or notify operator of this situation Release release resources exit ERR arrive here only if some error occurred above caller c Oct 30 10 50 1986 Page int quit retcode hang up the phone and exit int retcode i TimeOut MODEMTIMEOUT if HangUp Si te gt SysType WriteLog Caller could not hang up the phone UM n if IntFlag Release release resources else if unlink IntFileName ERR We must acknowledge WriteLog could not remove IntFileName exit retcode int Release free up the port and system queue taken by QMS for our use if DebugLevel WriteLog Caller freeing PortName if FreePort PortName ERR WriteLog Caller could not free PortName after use void ShutDown WriteLog ShutDown operator requested system shutdown Release exit 0 checkdown c Oct 30 10 50 1986 Page include net h include params e int CheckDown RSi te site RSi te _ Returns TRUE if site is declared DOWN FALSE otherwise Sets callback time appropriately and updates number of failed calls PutSite sets status and frees site entry storage RSite gt NumCalls increment the retry count if RSite gt NumCalls gt MaxCalls i RSite gt Status DOWN declare the site down RSite gt Num
43. Set Identifier RMKS 0 This set is used for any additional required information Set Identifier DWNGRADE C This set is mandatory when the message is classified Field 1 Downgrading and Declassification Markings M Enter the appropriate downgrading and declassification markings if the message is classified 679 DUI 001 185 MESSAGE CONTENT MESSAGE NUMBER 5006 PAGE 1 OF 2 TITLE CASUALTY INFORMATION REPORT CASSTATS PURPOSE TO REPORT CASUALTY INFORMATION IN FOUR CATEGORIES BROKEN DOWN BY UNIT TOTAL MILITARY PERSONNEL CLASS ANO SPECIALTY SKILL OR MOS THE FOUR CATEGORIES ARE KIA WIA MIA AND NON BATTLE CASUALTIES SET FIELO MANDATORY ENTRY START DF DUI IDENT CAT NO FLU DESC COL HEADER FIELU NAME COL J NO TYPE NO EXER C 1 EXERCISE NICKNAME 1 56 ANBS E 335 001 2 EXERCISE MESSAGE ADDITJONAL IDENTIFIER 1 16 335 002 OPER C T 1 OPERATION COOEWORD 1 32 336 001 0 2 PLAN ORIGINATOR AND NUMBER 3 23 ANS 925 001 0 3 OPTION NICKNAME l 23 ANBS 585 00 0 4 SECONDARY OPTION NICKNAME 1 23 ANBS 585 002 MSGID i CASSTATS MESSAGE TYPE l 20 ANBS 050 001 M 2 ORIGINATOR 1 20 ANBS E 146 001 0 3 MESSAGE SERIAL NUMBER 7k 147 005 REPORT SERIAL 4 5 ANS 147 006 E 0 4 MONTI 580 001 A 0 5 QUALIFIER 3A OE 568 001 0 6 _ SERIAL NUMBER OF QUALIFIER l 3N 457 017 REF 0 R M SERIAL LETTER 1A 6636 02 2 MESSAGE TYPE 1 20 ANBS E 050 001 COMMUNICA
44. Storage for menu items struct window Window MAXWINDOWS Information about each open window char CurSys 12 Name of current system being moni tored char ThisName The name of this site WINDOW Command felse Command menu window for curses Page External definitions see above comments for corresponding structures extern extern extern extern extern extern extern extern extern extern extern extern int int int int int int ndows MenuSize 2 CurSel CurTier GoodTerminal Speed char SysName char Menu 2 MAXOPT ONS 20 struct window Window MAXWINDOWS char CurSys 12 char ThisName WINDOW Command m console h Oct 30 10 51 1986 Page 5 fendif wait h Oct 30 10 51 1986 Page 6 Structure of the information in the first word returned by wait f stopval WSTOPPED then the second structure describes the information returned else the first union wait i int w status used in syscall Terminated process status struct unsigned short Termsig 7 termination signal unsigned short w_Coredump l core dump indicator unsigned short w Retcode 8 exit code if w_termsig 0 w 7 Stopped process status struct unsigned short w_Stopval 8 STOPPED if stopped unsigned short w Stopsig 8 signal that stopped us w_S P define WSTOPPED 0177 value
45. TACCNET Technical Specification November 14 1986 4 3 2 Initialization Once the TACCNET system has been installed and all corresponding tables modems and phone lines have been correctly configured the system will be operational Typically the user will wish to interact with the system to start it stop it generate messages monitor system log files etc through the screen oriented user interface or console program Information on this program can be found in the User Interface section of this document The manual inter face which is command driven and necessary in an environment that does not support cursor control or video displays is described here It is important to understand how to interact with TACCNET in this environment since some elements of the screen oriented interface require knowledge of the commands described below There are two modes in which the system operates one pass and continuous operation In both modes the Queue Manager System qms examines all pos sible system queues and invokes callers for each system which has messages pending This sweep of system queues only occurs once in one pass mode where continuous operation mode causes the qms to sweep continuously as long as the system is active Similarly the Message Processor msgproc and the D ata Base Server server can either process the files in their respective queues in a single pass or continue to check their queues until instructed to st
46. closewindows o printmenu o tailfile o dispqueue o addcolumn o getdir o lastlines o printtitle o printborder o close o open o cmdprompt o getconf o saveconf o readfile o redraw o clear o changespeed o newsys o view o select o dispfile o admin o runshell o usershell o status o changed o writeconf o lockfile o readsite o writelog o queuesize o ports o myname o fileopen o cc 0 o console console o startup o initwindow o getmenu o perform o update o closewindows o printmenu o tailfile o dispqueue o addcolumn o getdir o lastlines o printtitle o printborder o close o open o cmdprompt o getconf o saveconf o readfile o redraw o clear o changespeed o newsys o view o select o dispfile o admin o runshell o usershell o status o changed o writeconf o lockfile o N writelog o readsite o queuesize o ports o myname o fileopen o curses ltermcap console o console c cc 0 c console c startup o startup c cc 70 c startup c initwindow o ini twi ndow c cc 0 c ini twi ndow c getmenu o getmenu c cc 0 c getmenu c perform o perform c cc 0 c perform c update o update c cc 0 c update c closewindows o closewindows c cc 0 c closewindows c printmenu o printmenu c 0 c printmenu c tailfile o tailfile c cc 0 c tailfile c dispqueue o dispqueue c cc 0 dispqueue c addcolumn o addcolumn c 0 c addcolumn c getdir o getdir c cc 0 c getdir c lastlines o lastlines c cc 0 c l
47. fscanf 1 TempBuf skip down to 5KMOCAS set while EQUALS TempBuf 5KMOSCAS SkipEOL MsgFd if fscanf MsgFd 558 TempBuf EOF Check for error WriteLog PostCAS UNITCAS message missing 5KMOCAS set TIT fclose Datafp return ERR SkipEOL skip end of line SkipEOL MsgFd skip column headings while LastLine Process all lines in columnar set 5KMOSCAS Result fscanf MsgFd 5 1 5 1 5 1 5 1 5 Jgs SSI_MOS Count 0 Count 1 Count 2 Count 3 CTPers postcas c Oct 30 10 52 1986 Page 18 if Result EOF WriteLog PostCAS UNITCAS message incomplete Le ni fclose DataFp return ERR SkipEOL MsgFd for i0 1 lt 4 13 replace dashes with zeros if Count i O strcpy Count i 0 fprintf DataFp 95195195 153 1 1 Name 551 MOS Count O0 Count 1 Count 2 Count 3 Len strlen CTPers if Len gt 1 amp amp CTPers Len 1 amp amp CTPers Len 2 LastLine TRUE This is the last line fclose DataFp Close output data file Run DBLOAD to update values from message sprintf Command Xs file db cas 5 cas sp gt dev null 2 dev null DBLOAD DATAFILE system Command WriteLog PostCAS posted CASSTATS message for Name return GOOD postpol
48. fscanf Fd 6 Site read the site name from the file if Lock SITETABLE ERR WriteLog DeleteSite Can t lock SITETABLE exit 1 if SiteTableFd fopen SITETABLE zx NULL WriteLog DeleteSite Can t open SITETABLE UnLock SITETABLE return ERR indicate failure find the desired site and deactivate it while c getc EOF if FIELDMARK StartOfLine ftell SiteTableFd long 1 fscanf SiteTableFd 5 TempBuf get a site name if EQUALS TempBuf Site it is the one we seek fseek SiteTableFd StartOfLine 0 reset fprintf SiteTableFd DELCHAR make site inactive fclose SiteTableFd UnLock SITETABLE WriteLog DeleteSite Site has been deactivated return G00D all is well else SkipEOL SiteTableFd WriteLog DeleteSite Site was not found in site table fclose SiteTableFd 9 deletesite c Oct 30 10 51 1986 Page 10 UnLock SITETABLE return ERR indicate site not found examinesite c Oct 30 10 51 1986 Page 11 finclude net h Command line format e xamine site Get a copy of the site table entry for the site specified on the command line and send it in a message to the requesting site int ExamineSite MsgFd FILE MsgFd register int Found FALSE register in
49. if PathList O NULL fprintf stderr no valid paths specified n usage argv 0 read the message into temporary file sprintf TmpFileName TEMPFILEHEAD if TmpFileFd fopen TmpFileName w t NULL i if Ch getc stdin EOF empty message not allowed 4 fprintf stderr Sorry empty messages are not 11 fclose TmpFileFd if unlink TmpFileName ERR delete the temporary file WriteLog GenMsg can t unlink TmpFileName exit ERR while Ch EOF copy text till end of file putc Ch TmpFileFd Ch getc stdin alse fprintf stderr Can t allocate for message input exit ERR for each path in PathList generate a message and enqueue it for j 0 PathList j NULL j if MakeMessage Priority PathList j TmpFileFd fprintf stderr can t generate message n fclose TmpFileFd if unlink TmpFileName ERR delete the temporary file WriteLog GenMsg can t unlink TmpFileName exit ERR genmsg c Oct 30 10 51 1986 Page exit GOOD This function will generate a message for the site given in SiteName with the body of text contained the stream Fd Return value is TRUE if operation succeeds FALSE otherwise int MakeMessage Priority Path Fd char Priority char Path F
50. if arge 3 if pM 4 55 argv 3 0 amp amp argv 3 1 d argc Remove last argument sscanf argv 3 2 amp DebugLevel else fprintf stderr usage 45 system port n argv 0 Release release resources UnLock SysName exit ERR Get debug level d strcpy SysName argv 1 strcpy PortName argv 2 sprintf LogFile log s log SysName if DebugLevel WriteLog Caller system debug level is argv 3 2 if ValidPort PortName WriteLog Caller PortName found PORTTABLE Release release resources UnLock SysName exit ERR open the modem port and make sure the modem is awake if ModemFd OpenModem PortName ERR WriteLog Caller can t open PortName to call SysName Release release resources UnLock SysName exit ERR ifdef XENIX reset O_NDELAY on XENIX system see openmodem c if File fopen PortName NULL WriteLog Caller Can t turn off O_NDELAY PortName Release UnLock SysName exit ERR 1111 nim fprintf File if ParamFileFp PARAMFILE r NULL i fscanf ParamFileFp 45 d n Key amp Value while feof ParamFileFp amp amp ferror ParamFileFp l caller c Oct 30 10 50 1986 P
51. include extern int DebugLevel int Schedule SiteName Type char SiteName int Type This routine will try to schedule call to the named Site It will read the port table to see if there is already a conversation with that site in progress If not it will try to get an available port for use a port is available a Caller program will be invoked with the Site name and Port Name and we return GOOD f there is already a conversation in progress we return GOOD If there are no ports available we return ERR If we cannot run a Caller we return ERR If the Type of call is high priority and a port is not available we will attempt to seize a port from a currently operating Caller When the caller is started the Port Table will be marked to indicate the nature of the call ROUTINE or RPIORITY portlist PortList storage allocated by GetPorts pathname SeizePort sitename SeizeSite pathname PortName pathname Caller register int Talking FALSE register int Result register int i register int Condition site Site char Response 10 char ThisName Pointer to the name of this system void PSFree Routine to free storage for ports structure Declared common ports c ThisName MyName We want to be able to deasiiosata the storage if EQUALS Si teName ThisName LUN Thi sName return GOOD free ThisName if DUM ValidSite
52. reset for output fprintf SiteTableFd 5 14 1d 91 SiteEntry gt Status SiteEntry NumCalls SiteEntry TimeToCall fclose SiteTableFd if DebugLevel WriteLog PutSite SiteEntry gt SiteName has been modified UnLock SITETABLE return 6000 exit and indicate successful copy else jutsite c Oct 30 10 50 1986 Page 34 advance to start of next site entry do SkipEOL SiteTableFd skip to next line SiteTableFd read first character while FIELDMARK amp amp c EOF while c EOF we wind up here if the site is not defined WriteLog PutSite SiteEntry gt SiteName not defined in S TETABLE fclose SiteTablefFd UnLock SITETABLE return ERR exit and indicate error readsite c Oct 30 10 50 1986 Page 35 include net h site ReadSite Fd FILE Fd ReadSite read a site entry from the stream Fd into a static site structure declared here return pointer to the struct i static site SiteStore Define entire structure as static site Site int c int i20 static int KStatus KNumCalls Temporary read variables static long KTimeToCall static char KSysType pathname TempBuf Site amp SiteStore fscanf Fd s TempBuf strepy Site gt SiteName TempBuf Read structure entries using temporary automatic variables so that this will
53. sprintf MyStr MyCheckSum WriteLog GetBlock his checksum is HisStr mine is MyStr else All is A Q K SendByte ACK Send positive acknowledgement break Leave this loop we have a good packet J RetryCount4 See how long it takes Why did we leave the loop if RetryCount gt MaxRetry Because of error return NULL We had an error else if SeqNo HisSeqNo SeqNo SeqNo 1 0 100 Set up for next packet if good else goto StartOver Start over if old packet retransmitted Set up return information create block buffer endflag TempBuf ENDFLAG Set return parameter length ENDFLAG Set block length for caller no EOS BlockBuffer unsigned char malloc length 1 Allocate block if BlockBuffer NULL Don t keep going if problem exists WriteLog GetBlock OUT OF MEMORY allocating block Exit INTERNALERROR movmem TempBuf 3 BlockBuffer length Move good data Get rid of storage allocated in lower level for packet getblock c Oct 30 10 51 1986 10 free TempBuf return BlockBuf fer Return pointer to good block of data getfile c Oct 30 10 51 1986 Page 1 include net h include iocontrol h include iocontrol e GetFile read the next file if available from remote system taking care of retransmission et
54. wrefresh msg win wmove wi n LINE COL wrefresh win else waddch win c wrefresh win str it break if DONE break if DEL ex handler 1 else if c str i str i N0 else if c r waddch win Xn Exception Handler RARE III ex handler i int is switch i case Terminate the program clear refresh exit 1 break default break scr c Oct 30 10 51 1986 Page 55 util c Oct 30 10 51 1986 file name util c This file contains utilities which may be used for any program GERNE Convert the first k substring of str to integer 4 22 2 2 int atoin str k char str int i int n 0 for is0 i k lox n str i 0 return Convert char c to upper case ASCII only char upchar c char c if c gt a 66 c e z return ct A a else return 11 gt Convert str s to upper case ASCII only m
55. SendByte EOT break NextName DeQueue QueueNaue Read sysX queue if NextName NULL sprintf NextPath Zs Zs QueueName NextName if SendFile NextPath NextName ERR Send it Archive NextName QueueName Copy file Remove NextName QueueName Delete file else Something went wrong during transmission WriteLog IOControl QueueName FAILED exit LOSTCONTACT Hang up and all that else SendByte EOT Send end of transmission memory TRUE Remember that we sent EOT CloseDir QueueFd mode RECEIVEMODE Enter receive mode break case RECEIVEMODE Receive mode Result GetFile Get next receive file if Result EOT QueueFd OpenDir QueueName mode SENDMODE else if Result INTERRUPTED Result ABORTED WriteLog IOControl RemoteName aborted WriteLog IOControl relinquishing line mode HANGUP Force a graceful hangup else if Result ERR WriteLog IOControl RemoteName FAILED exit LOSTCONTACT else memory FALSE Forget about hanging up break default Illegal undefined mode WriteLog IO0Control internal error bad mode exit INTERNALERROR Ungraceful exit to 0 5 End of WHILE WriteLog IO0Control conversation COMPLETE RemoteName if
56. etes erste Malus Maintenance 4 5 0 Recommendations and Conclusions 101 2211041 6 0 References TrrrrTrrrrrirerrerererereceeeeerererrereerrerrereeeereeeeree see eee del hed 0 m 10 11 13 13 16 18 20 21 23 23 26 29 32 34 35 95 35 35 36 97 37 37 43 46 98 58 60 61 63 75 76 TACCNET Technical Specification November 14 1986 1 Introduction This document has been prepared as an examination of the issues surrounding the development and implementation of the Combat Service Support Control System CSSCS and the Command and Control C Database In order to fully explore these issues prototype CSSCS and C Database systems were designed and implemented Descriptions of these prototypes are included here along with instructions for installation and operation of the prototype systems The project began with the results of previous work undertaken to study the issues of communications and message passing in the environment of the CSSCS These results were expanded upon and incorporated into the develop ment of the prototype CSSCS system In addition to messa
57. exit FATAL This is fatal cannot dequeue chdir DirName EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt SETHAY C TIME 1987 02 12 1722 14 1 include net h extern int ModemFd int SetHayes PortName char PortName Set the command modes and switches on the Smartmodem 1200 Test the modem to see if it will accept commands and give proper response Return GOOD if all s well ERR otherwise register int i n if write ModemFd SETUP strlen SETUP 0 WriteLog SetHayes write setup string to PortName return ERR FlushModemInput ModemFd Be sure buffer is empty try to talk to the modem for 1 0 i410 i write ModemFd ATTENTION strlen ATTENTION switch Receive case ERR WriteLog SetHayes no response to ATTENTION signal 4 break case OK FlushModemInput ModemFd return GOOD default WriteLog SetHayes modem answered ATTENTION with invalid code TE nme break FlushModemInput ModemFd Be sure buffer is empty WriteLog SetHayes Cannot establish rapport with modem on PortName ww ny return ERR EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt SETPOR C TIME 1987 02 12 1723 00 0 finclude net h extern int ModemFd int SetPort PortName char PortName Open the named port for use by IOControl Cannot set line parameters so don t do that here Honeyw
58. pathname FileName FILE Fd register int sprintf FileName s s Queue INTFILE create the interrupt flag file if Fd fopen FileName w NULL WriteLog Interrupt can t create FileName return ERR else fclose Fd wait for Caller to remove the file after lOControl surrenders the port while Fd fopen FileName NULL 66 i lt 10 UNT Fd sleep 15 Could be made into a runtime parameter if i gt 10 then the file was never removed fclose Fd unlink FileName return ERR return GOOD movepri c Oct 30 10 52 1986 5 include net h int MovePRI FileName QueueName char FileName char QueueName Move the named file from the priority queue to the named system queue Return ERR if there are any problems O if all goes weil pathname OldPath pathname NewPath sprintf OldPath 5 5 PRIORQ FileName sprintf NewPath s c s QueueName PRIORTYPE 1 1 WriteLog MovePRI moving OldPath NewPath return FRename OldPath NewPath qms c Oct 30 10 52 1986 Page 6 inelude net h inelude signal h define ABORTFILE abort pathname Logfile global log file for QMS routines int DebugLevel 0 runtime debug level 0 normal int ForwardFlag TRUE Set default forwarding of messages main argc argv
59. pathname TempFileName Complete pathname of file to be opened sprintf TempFileName s s QueueName FileName return fopen TempFileName FileType frename c Oct 30 10 50 1986 include net h int FRename Pathl Path2 char Pathl char Path2 Renames Path to Path2 i if link Pathl Path2 ERR return ERR if unlink Pathl ERR return ERR return GOOD Page 19 getdir c Oct 30 10 50 1986 Page 20 include net h include lt sys dir h gt define NFILES 96 Max files per directory define Size sizeof struct direct char GetDir Dir char Dir long Iseek struct direct DirEntry register int Num 0 static filename Entries NFILES int DirFd Directory file descriptor if DirFd open Dir O RDONLY ERR WriteLog GetDir unable to open Dir directory return NULL Return empty list if can t open directory if lseek DirFd 32L 0 long ERR Skip and close DirFd return NULL while read DirFd amp DirEntry Size O if DirEntry d ino ino t 0 amp amp DirEntry d name 0 DOT strcpy Entries Num DirEntry d name close if Num gt 0 Sort Entries Num Entries Num NULL Set the last one to NULL return Entries else return NULL Sort Entries Num filename Entries register int Num getdir c
60. ptr 1 iii i Iiii 1 1 233 Delete all the messages from the multi level list delOlist ptr10 11510 ptr10 if ptrlO Next NULL delOlist ptr10 gt Next delOnode ptr 10 Delete the whole message from the multi level list delOnode 10 11510 ptr10 11510 tptrO tptrO 10 if ptrlO schild NULL delllist ptrlO schild 47 list c Oct 30 10 51 1986 Page if ptr10 gt Prev NULL if ptr10 gt Next NULL head NULL else t head ptrlO Next 0 NULL ptrlO ptrlO Next else 1 ptr10 gt Prev gt Next 10 10 10 gt ptrlO ptrliO Prev free tptrO mm anm unt emu tmu a ca mcm aw cct t o m a 7 Delete a SET node in the corresponding level list 11 C list tptrl tptrl ptr switch ptr1 gt settyp case columnar set if ptrl uval cschild NULL delcsflist ptrl1 uval cschild break case free text set if ptrl uval tschild NULL deltsnode ptr uval tschild break case L linear set if ptrl1 uval lschild NULL delislist ptr1 uval lIschi ld break if ptr1 gt Prev NULL if ptr 1 gt Next NULL ptrO gt schild NULL 48 list c Oct 30 1
61. register int n 0 register int Found FALSE register int c pathname Command sitename Site sitename TempBuf open the message file if Fd FileOpen MsgName MSGPROCQ NULL a WriteLog Hold can t open MsgName for processing return ERR read in the message header Get message s header info if MsgHeader GetMsgHead Fd header NULL WriteLog Hold can t read header in MsgName fclose Fd return ERR Try to recover fclose Fd get most recently tried site strcpy Site MsgHeader DownSites O0 see if the destination site was inactive if Lock SITETABLE ERR WriteLog Hold Can t lock SITETABLE goodbye UnLock MSGPROCQ Don t leave my lock file sitting around exit 1 if SiteTableFd fopen SITETABLE r NULL WriteLog Can t open SITETABLE UnLock SITETABLE return ERR indicate failure 23 hold c Oct 30 10 51 1986 Page 2 check all site entries starting with a DELCHAR while c SiteTableFd EOF amp amp l Found if c DELCHAR it is a deactivated site entry i fscanf SiteTableFd 5 TempBuf get a site name if EQUALS TempBuf Site it is the one we seek Found TRUE else SkipEOL SiteTableFd next line fclose SiteTableFd UnLock SITETABLE
62. waddstr STR fprintf usr airmics shinn bin ams out Es STR wprintwf xwin FORM STR WINDOW xwin char FORM char STR wprintw xwin FORM STR fprintf usr airmics shinn bin ams out STR dsp c Oct 30 10 51 1986 Page 14 form c Oct 30 10 51 1986 Page include jms h FILE WP imgf int LINE COL file name form c This file contains routines to display messages JINTACCS format k Build up the message in JINTACCS format Top Level Routine 1 Get the message data from the linked lists 2 Convert them into standard output format int convert listl ptrl WP imgf fopen imgf w wclear view win if ptrO print imsg ERROR No message found return ptr l ptr0 gt schi ld while ptr 1 view win s ptri SetiD fprintf WP imgf ngs ptri Set D switch ptrl settyp case columnar set X convesflist ptr1 uval cschi ld convesdlist ptr1 uval cschild break case F free text set convtsnode ptr1 uval tschi ld break case L linear set convislist ptr1 uval lIschild break wprintw view_win fprintf WP imgf if ptr1 Next if is last li
63. DATE OF REFERENCE DAY MONTH YEAR DATE OF REFERENCE DAY ALPHAMONTH YEAR MESSAGE SERIAL NUMBER REPORT SERIAL SPECIAL NOTATION NASIS CODE PAGE 1 OF 2 DF NOATYPE NO 56 ANDS E 335 1 16 AB E 335 1 32 AB E 336 3 23 ANS 925 1 23 ANBS E 585 1 23 ANBS 585 1 20 ANBS 050 1 20 ANBS 146 7 E 147 4 5 ANS 147 3A E 580 JA E 568 l 3N E 487 1A E 636 1 20 ANBS E 050 JA 646 1 20 ANBS 146 6 N C 075 7 AN C 143 13 ANB C 647 6 N C 648 7 AN C 649 7 N E 147 4 5 ANS E 147 5 A E 1042 332 DUI NO 001 002 001 001 001 002 001 001 005 006 001 001 017 002 001 001 001 010 005 001 002 002 005 006 001 001 861 200 005 7 322V MESSAGE NUMBER TITLE POL LOCATIONS POLLOC 655 MESSAGE 026 12345678901234 5678901 23456789012345678901234567890123456 7890123456789 EXER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXXXX 1 XXXKXXXXXXXXXXXA 2 OPER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX 1 2 XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX 3 4 MSGID POLLOC XXXXXXXXXXXXXXXXXXXX NNHNNNN AAA AAA NNN 1 2 3 4 5 6 NNNNNNN AXNXX REF A XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX NNNNINABAAANN NNNHNHNN 12 3 4 NE XXXXXXAXXXXXXXXXXXXX npn NNNNHNN AAA NNNNHHA AXNXX NNNNNNABAAANN NNNNNN NNAAANN AAAAA AAA 6 7 AMPN NARR PAGE 1 OF 2 861 INAC enn nna amp 9w nnv
64. Indicator that window is active int TopLine Line on which window starts int LeftSide Column in which window starts int Width Width of window in characters int Size Number of lines in window int Type Mindow type defined above FILE Fp File pointer associated with window console h Oct 30 10 51 1986 char Name 60 Path of file if associated with window long LastPos Last file position during tail long LastTime Last mod time for queue directory WINDOW Win Curses window associated herewith Macro definitions for correct inverse video processing define define define define Type typedef typedef typedef Standout if GoodTerminal standout StandEnd if GoodTerminal standend wStandOut win if GoodTerminal wstandout wi n wStandEnd win if GoodTerminal wstandend win definitions char sitename 14 char filename 50 char pathname 80 ifdef MAINPROGRAM Data declaration data will be accessible at all levels int NumWindows 0 Number of windows currently open int MenuSize 2 Number of entries in menu int CurSel 0 Current menu selection int CurTier 1 Current menu tier number level int GoodTerminal 1 Value for good inverse video support int Speed 1 Number of seconds between refreshes char SysName Pointer to argv 0 for program name char Menu 2 MAXOPTIONS 20
65. PORTTABLE UnLock PORTTABLE PSFree PortList return ERR free PortListLi gt Site PortListLi gt Site malloc strlen 5 1 strcpy PortList i gt Site Site PortList i gt State if PutPorts PortList ERR WriteLog TakePort can t write port list to mark Port in use PSFree PortList return ERR PSFree PortList return GOOD ports c Oct 30 10 50 1986 Page 29 int FreePort Port char Port Finds the named Port in the PORTTABLE and changes the port entry to indicate that the port is no longer in use Assumes the PORTTABLE is UNLOCKED and does its own locking portlist PortList register int i Found FALSE if Lock PORTTABLE ERR i WriteLog FreePort Can t lock PORTTABLE return ERR if a GetPorts NULL WriteLog FreePort can t read port list to mark Port in use UnLock PORTTABLE return ERR for i0 PortList i NULL i if petris Port Found TRUE break if WriteLog FreePort can t find Port PORTTABLE UnLock PORTTABLE PSFree PortList return ERR free PortList i Site PortListLi gt Site malloc strlen free 1 strcpy PortList iJ gt Site free PortList i State AVAILABLE if PutPorts PortList ERR f WriteLog FreePort can t write port list to mark Port in use UnLock
66. Sitelnfo PhoneNum i FlushModeminput ModemF d write ModemFd DialCmd strlen DialCmd df ReadStr Answer NULL WriteLog Dial no response to dial command sending AT m FlushModeminput ModemFd write ModemFd ATTENTION strlen ATTENTION if ReadStr Answer NULL WriteLog Dial no response to AT either return ERR Hy return ERR problem at our modem not theirs else if EQUALS Answer NOANSWER WriteLog Dial modem answered Answer return ERR 10 ial c Oct 30 10 50 1986 Page 11 arrive here if ReadStr returned an Answer promptly if EQUALS Answer ONE if DebugLevel WriteLog Dial modem answered Answer m if EQUALS Answer NOANSWER WriteLog Dial remote modem did not answer un else return ERR may be a problem at our end don t count else connection is established return TRUE if i then the list was empty i was never incremented WriteLog Dial none of the phone numbers worked m else WriteLog Dial the phone number list was empty H m return FALSE none of the phone numbers worked endswith c Oct 30 10 50 1986 include net h int EndsWith String Target char String char Target while Target NO if EQUALS String Target return TRUE return FALSE Page
67. The Honeywell DPS 6 is designated as the DAS3 in the ACCS network plan The Burroughs B26 machines are beta test versions of the TACCS The PC AT and ONYX systems were used to simulate more TACCS systems and to provide wider variety of hardware and software systems for testing The project began with the results of previous work undertaken to study the issues of communications and message passing in the environment of the CSSCS These results were expanded upon and incorporated into the develop ment of the prototype CSSCS system In addition to message passing and failure detection the prototype system addresses the issues of automatic mes sage routing dynamic network reconfiguration remote node identification net work security message generation and processing C database interactions and database backup recovery f UNIX is a trademark of AT amp T Bell Laboratories TACCNET G36 633 Final Technical Report April 28 1987 CSSCS environment is described as a loosely coupled occasionally connected network of independently operating computers By occasionally connected we mean that nodes in the network may come and go at will under normal operat ing conditions In addition the CSSCS environment is conducive to catas trophic node failures of network nodes The necessity of mobility and risk of destruction are unavoidable features of the battlefield environment in which the CSSCS will operate Node failures must be detected and
68. different names Creating a new link to a file is the same as instantaneously creating a file with the new name anywhere in the filesystem When a new link is created the data within the new file is guaranteed to be complete as com plete as the original file the instant the new directory entry appears Since each component of the TACCNET system is asynchronous with the others and constantly scans queues for new entries to be processed the possibility of a race condition occurs when a new file appears in a queue before it is completely ready for processing With the file system features mentioned above CSS mes sages can be enqueued in their entirety and in a single operation through the creation of a temporary file not visible in any queue and then the ultimate linking of that file to the target queue 3 3 1 2 File Locking UNIX does not provide a method for restricting concurrent access to data files When two asynchronous processes attempt to access the same data file there must be some guarantee that a race condition will not occur If one of the processes were to modify the file while another was reading it the data could be corrupted resulting serious errors To assure that such concurrency of access is not permitted a file locking mechanism must be instituted In the TACCNET prototype lock files are used to indicate that a corresponding file is busy or being accessed by another process
69. exit BADCONNECTION else if Result ERR WriteLog SendName TIMED OUT waiting for second exit LOSTCONTACT Simply returning indicates success Errors are fatal causing exit EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt SENDPA C TIME 1987 02 12 1720 25 2 finclude net h finclude iocontrol h finclude iocontrol e SendPacket construct a packet with checksum using DLE as a data link escape symbol precedes ETX ETB The parameter end indicates if this is the end of a mess ce or if there is more to come int SendPacket data length end unsigned char data Pointer to character data binary permitted int length Length of packet to transmit int end End of text flag unsigned char Packet Must allocate storage in this routine int Ptr Pointer into packet int Code Checksum code returned int 1 ifdef DEBUG FILE tmp fopen usr taccnet log proto log fendif Packet unsigned char malloc length PKTOVERHEAD Reserve data if prem NULL WriteLog SendPacket OUT OF MEMORY allocating for packet exit INTERNALERROR sprintf Packet Z 2X SeqNo Encode packet number ASCII hex Packet 2 STX for i 0 i lt length i Copy data section into packet Packet 1 3 data i Transparency already taken care of Ptr i 3 if Ptr gt length
70. go on to next message read in the rest of the MSGID set end marked by for i0 1 lt 6 i there may be up to 6 data items fscanf MsgFileFd if strlen MsglD i 0 break MsgID i read data got the marking end of set SkipEOL MsgFileFd position file pointer at start of next set if gt amp amp EQUALS MsgID h REQ the message is a request Request MsglD O MsgID 1 Imt ReturnPath Priority else the message is an update Post 910 0 MsglD 1 MsgFileFd jk post it to the C2 database WriteLog Server NextMsgName been processed Remove NextMsgName SiteName server c Oct 30 10 52 1986 Page 28 got on to next message to be processed if Forever sleep between scans sleep PollDelay while Forever Continue scanning queue for more arrivals UnLock SERVER WriteLog Server normal termination 9 exit GOOD int usage Name char Name fprintf stderr usage 4s directory sitename n Name exit ERR void ShutDown WriteLog ShutDown operator requested system shutdown 1 UnLock SERVER exit 0 startmsg c Oct 30 10 52 1986 Page 29 include net h include server h create the datafile for AMS and write the initial main text of the message FILE StartMsg MsgName Unitid Imt char
71. good return code ValidPort PortName char PortName EOF Returns TRUE if PortName is defined in PORTTABLE FALSE otherwise portlist PortList register int i Found if Lock PORTTABLE ERR WriteLog ValidPort Can t lock PORTTABLE return ERR if PortList GetPorts NULL WriteLog ValidPort can t read port list mm UnLock PORTTABLE return ERR for is0 Found FALSE Found amp amp PortList i NULL i if EQUALS PortList i gt Port PortName Found TRUE free PortList UnLock PORTTABLE return Found PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt PUTSIT C TIME 1987 02 12 1648 29 2 include net h ext int sit ern int DebugLevel PutSite SiteEntry e SiteEntry Looks up SiteEntry in SITETABLE and replaces its status information with the info in structure pointed to by SiteEntry If the site is not defined in the SITETABLE an ERR will be indicated by the return code If the copy succeeds the storage used for the site entry will be be released FILE SiteTableFd register int c register int n 0 long offset char Name SITENAMELEN if Lock SITETABLE ERR WriteLog PutSite lock SITETABLE exit 1 if SiteTableFd fopen SITETABLE NULL WriteLog PutSite Can t open SITETABLE
72. if ptrO schild NULL ptrO gt schild nodel nodel prev NULL else nodel gt prev ptrl ptrl next nodel nodel parent ptrO nodel gt next NULL switch 5 case C columnar set 1 uval cschild NULL break case F free text set nodel uval tschild NULL break case L linear set nodel uval lschild NULL break nodel gt settyp SETTYP strcpy nodel setid bl sup SETID ptr l nodel Add a node for a field of the linear set add 1s node fname fdsc lrj format 7 add c Oct 30 10 50 1986 Page char fname fdsc irj format ptr is 15 1 4 malloc sizeof 1snode f the node is the first node of the parent node if ptrl uval lschild NULL i ptrl uval lschild 5 ptris gt prev NULL else ptris gt prev taills taills gt next ptris gt ptrl ptris gt next NULL ptris gt fchild NULL strcpy ptris fdname fname strcpy ptris fdesc fdsc strcpy ptris gt j Irj strcpy ptrls notype format taills ptris Insert field value into the linear set node ins 15 data datastr char datastr strcpy taills gt fval datastr oe a oe eo ee ee ee oe Add a node for a field of the columnar set _ RI
73. open c Oct 30 10 51 1986 Page 33 if WindowNum BAD wclear Window Wi ndowNum Win werase Window WindowNum Win wrefresh Window Wi ndowNum Win Wi ndow Wi ndowNum Fp NULL Window WindowNum LastPos OL Window WindowNum LastTime OL PrintBorder WindowNum TRUE PrintTitle WindowNum perform c Oct 30 10 51 1986 Page 34 include console h extern int CurScreen Current screen Perform given a function code entered from menu perform desired operation such as opening a new status window closing a window changing system to monitor saving configuration etc void Perform code int code Function code to be performed for operator char Temp 80 int 1 switch code case NEWSYSMON Monitor new system NewSys break case SAVECONF Save configuration SaveConf break case OPEN Open one of four static windows if not open Open break Close one of four static windows if open Close 0 break case SPEED Set polling interval faster or slower ChangeSpeed break View a message using selected via hjkl keys View break case REDRAW Repaint the screen in the case of a problem ReDraw break Retrieve a configuration previously saved GetConf case CLOSE case VIEW case GETCONF break case CLEAR Clear a window s contents Clear 0 break case ADMIN
74. ttyname 0 close 0 close 1 ModemFd open TermName O_RDWR Treat terminal as remote mode SLAVEINIT Enter INITIALIZATION as SLAVE CurFilePtr 0 Initialize index for DEQUEUE routine Main loop perform tasks depending on current mode while mode HANGUP switch mode case MASTERINIT sprintf LogFile 1og Zs log RemoteName if DebugLevel WriteLog IOControl assuming MASTER mode WaitEnq Wait for enquire send ACK if DebugLevel WriteLog IOControl enquire received and acknowledged SendName Send system name wait for ACK WriteLog IOControl connection established RemoteName QueueFd OpenDir QueueName 3 mode SENDMODE Enter send mode break case SLAVEINIT SendEnq Send ENQ signal wait for ACK WaitName RemoteName Wait for remote id send ACK sprintf LogFile log s log RemoteName if DebugLevel WriteLog IOControl assuming SLAVE mode m WriteLog IOControl connection established RemoteName strcpy QueueName RemoteName mode RECEIVEMODE Enter receive mode break SENDMODE Send mode Check to see if line needed by higher priority task or if we re simply finished Hang up if so if memory Preemption QueueName mode HANGUP CloseDir QueueFd
75. 0 Restart length 0 Result ReadBurst TempPacket MAXPACKET Read until CurMax Result gt 0 Result 1 2 while Result gt 0 amp amp TempPacket CurMax 1 EM amp amp TempPacket CurMax 2 DLE 4 Result ReadBurst amp 1 MAXPACKET CurMax 1 CurMax Result gt 0 Result 0 if Result lt 0 WriteLog GetPacket received poorly formed packet SendByte NAK if RetryCount gt MAXRETRY WriteLog GetPacket retry limit reached return NULL goto Restart A valid packet was received in that it terminated in DLE EM length CurMax Set return value to number of characters read unsigned char malloc length 1 Allocate storage if Ptr unsigned char NULL WriteLog GetPacket OUT OF MEMORY allocating for packet exit INTERNALERROR movmem TempPacket Ptr length Move data to new buffer return Ptr EOF PAT TIM in in fin int cha EOF ZSYS72 gt UDD gt GOLDBERG gt UNIX gt GETHEA C E 1987 02 12 1618 25 2 clude net h clude iocontrol h clude iocontrol e GetHeader read header for next incoming message The message header is merely a packet containing the name of the message file Verify that the message is new and return good if so send NAK
76. 0 qms c schedule o net h schedule c cc c 0 schedule c getsites o net h getsites c cc c 0 getsites c getdest o net h getdest c 0 getdest c movepri o net h movepri c cc c 0 movepri c interrupt o net h interrupt c cc 0 interrupt c Page getdest c Oct 30 10 52 1986 include net h int GetDest MsgFile SiteName char MsgFile char SiteName Page Open the MsgFile and get the destination site from the path line Check to be sure that the site is valid Return ERR if anything is wrong O if all is well Return name of site in SiteName pathname Path FILE Fd if P fopen MsgFile r NULL open the message file WriteLog GetDest can t open MsgFile return ERR SkipEOL Fd fscanf Fd c s Path StripMe Path SiteName fclose Fd if ValidSite Si teName NULL return ERR return 0 fk skip over the priority line read the full destination path strip off the first site close the message file make sure the site is valid good return code getsites c Oct 30 10 52 1986 include net h char GetSites Reads the SITETABLE and builds an array of site names Uses malloc to get storage for the list Returns a pointer to the list in SiteList Returns NULL if there is an error 0 if all is well End of array is marked by SiteList n NUL
77. 050 001 ps M 2 ORIGINATOR 1 20 ANBS E 146 001 0 3 MESSAGE SERIAL NUMBER 1 ANBS E M7 005 0 4 MONTH 580 001 0 5 QUALIFIER JA E 568 001 0 6 SERIAL NUMBER OF QUALIFIER 1 487 017 DTGM M M 1 AS DATE TIME 6 914 25 UNITIOM M M 1 DESIGNATOR 6 21 ANS C 095 001 UNIT DESIGNATOR 1 24 ANBS 987 005 6KSHTSUP M M 1 LOGISTICAL SUPPORT ITEM eL 11 22 ANBS C 460 001 0 2 CMNT REPORT COMMENT 251 l 18 ANBS E 150 022 C RMKS 0 DWNCRADE C M 1 DOWNGRADING AND DECLASSIFICATION 1 25 ANBS E 679 001 MARKINGS 1 1915 pge aunp 00 00S V S22V 6S meme F es we MESSAGE NUMBER 5034 TITLE SUPPLY SHORTAGES SHORTSUP 123456789012345678901234567890123456789012345678901234567890123456789 EXER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX 1 XAXXXXXXXXXXXXXA 2 OPER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX 1 2 XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX j 4 MSGID SHORTSUP XXXXXXXXXXXXXXXXXXXX XXXXXXX AAA AAA NNN 1 2 3 4 5 6 DTGM NNNNNN 1 UNTTIDM XXXXXXXXXXXXXXXXXXXXXXXX 1 XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX 6KSHTSUP MAT EQUIP VEH CMNT XXXXXXXXXXXXXXXXXX 1 2 AMPN RMKS DWNGRADE AAAXXXXXXXXXXXXXXXXXXXXXX 1 PAGE 1 OF 1 1 dns 9586 00 008S V S22V e ACCS A3 500 003 June 1984 Sup 1 Page 1 of 1 MES
78. 1 Always wait one second before retrying FlushModeminput ModemFd write ModemFd newstr 1 write ModemFd amp newstr 1 1 1 Output remainder of string free newstr felse write ModemFd string length Output the string fendi f Tail 0 DLE Tail 1 EM Tail 2 send c Oct 30 10 51 1986 Page 28 write ModemFd Tail 3 Always terminate with a carriage return sendblock c Oct 30 10 51 1986 Page 29 include net h iocontrol h include iocontrol e extern int MaxRetry SendBlock send a block to the remote system unti received correctly or unti retry limit is reached int SendBlock data length endflag unsigned char data Data to be transmitted null terminated int length Length of block in bytes can t use string fns int endflag Flag indicating this is the last block of a message i int RetryCount 0 Count of number of negative acknowledgements int Result Result code from tAck while RetryCount lt MaxRetry Do not try forever FlushModemlnput ModemFd Dump the garbage SendPacket data length endflag Try to send the packet if Result WaitAck int NULL adis SeqNo 1 0x100 Give us next 2 byte sequence no break 3 Exit loop acknowledge received ifdef FORHONEY if Result NAK sleep 2 Honeywell re
79. Before a process can begin reading or writing common data file it must create the designated lock file for that data file If the lock file already exists in which case it cannot be created the process cannot access the file In this way all other processes are locked of a file until its corresponding lock file is removed by the pro cess currently accessing the file The action of creating the lock file is considered to be atomic That is when any two processes attempt to create the lock file at the same time using the UNIX open 2 call for example only one will be permitted to create the file and the other will receive an error condition If this facility did not exist more complicated schemes would be necessary for assuring mutual exclusion for the lock file itself If a process attempts to lock a file and is unable provisions must be made for assuring either eventual access to the file or eventual failure Once the file is released by a process its associated lock file is removed A waiting process can seize the file by creating the lock file after that point If more than one process is waiting only one will gain aecess to the file and the others will continue to try to create the lock file until they either succeed or give up TACCNET Technical Specification November 14 1986 It is assumed that all accesses to a data file are for relatively short intervals of time so that a threshold can be determined for retr
80. CP ACER Cd E 43 File validuser c Page 45 x22 x3 9315 RA eae Sie ee ae eevee gt Makefile Oct 30 10 51 1986 Base msgproc filenq o fileopen o forward o getaltsites o lockfile oN getmsghead o makecc o newfile o remove o reroute o process oN msgproc o dequeue o getdir o myname o handlerror o writelog oN datetime o stripme o mpmail o administer o readsite o activatesi te oN changesite o deletesite o examinesite o validsite o hold o validuser o getline o high o frename o save o transfer o archive o recover o hashtime o abort o cc 0 o msgproc filenq o fileopen o forward o getaltsites o getmsghead o makecc o newfile o remove o reroute o process o hold oN msgproc o dequeue o getdir o myname o handlerror o writelog oN datetime o stripme o mpmail o administer o lockfile o validsite o readsite o activatesite o changesite o deletesite o examinesi te oN validuser o getline o high o frename o save o transfer o archive o recover o hashtime o abort o strip msgproc msgproc o net h msgproc c cc 0 c msgproc c getline o net h getline c cc c 0 getline c transfer o net h transfer c cc 0 c transfer c Save o net h save c cc 0 c save c activatesite o net h activatesite c 0 c activatesite c changesite o net h changesite c cc 0 c changesite c deletesite o net h deletesite c cc 0 deletesite c examinesite o net h examinesite c cc 0 c examines hol
81. Current operating mode 0 25send J3 sreceive int memory FALSE Used to determine hangup status pathname NextPath Complete path of any given file char NextName File name for each file read from queue char TermName Terminal name returned by ttyname Honeywell Sitename RemoteName Name of calling remote site int Result int QueueFd extern int CurFilePtr char ttyname Need to know terminal s name on Honeywell Parse arguments to see if this is invoked on local system sprintf LogFile log Zs log QMS if arge 3 amp amp argc 1 if pw 4 amp amp argv 3 0 7 7 amp amp argv 3 1 7 7 argc Remove last argument sscanf argv 3 42 Zd amp DebugLevel Get debug level d WriteLog IOControl system debug level is argv 3 2 else fprintf stderr usage sysname portname n argv 01 exit FATAL if argc 3 master mode mode MASTERINIT Enter INITIALIZATION as MASTER strcpy QueueName argv 1 Place queue name in local var strcpy RemoteName argv 1 Remember name of remote ModemFd SetPort argv 2 Open modem as instructed if ModemFd ERR Could not do it WriteLog IOControl FAILED opening argv 2 modem exit FATAL The modem should have been available abort else slave mode TermName
82. DUI 022 55 1 ACCS A3 500 003 June 1984 Sup 1 Page 2 of 2 MESSAGE INSTRUCTIONS MESSAGE NUMBER 5034 TITLE Supply Shortages SHORTSUP SPECIAL INSTRUCTIONS Continued Set Identifier AMPN C This set is mandatory if entries are made in the report comment fiela of set 6KSHTSUP Enter free text explanation of entry made in report comment field of set 6KSHTSUP Set Identifier RMKS 0 This set is used for any additional required Information Set Identifier DWNGRADE C This set is mandatory when the message 15s classified Field 1 Downgrading and Declassification Markings M Enter the appropriate downgrading and declassification markings if the message is classified 679 DUI 001 56 MESSAGE CONTENT e ee Ub ete ee o MESSAGE NUMBER 5034 1 OF 1 TITLE SUPPLY SHORTAGE SHORTSUP PURPOSE TO IDENTIFU SUPPLIES WHICH BECAUSE OF THEIR SHORTAGE COULD AFFECT THE COMBAT EFFECTIVENESS OF A UNIT SET FIELD MANDATORY ENTRY START DF I DUI IDENT CAT NO FLD DESC COL FIELD NAME COL J NO TYPE NO NO EXER C M 1 EXERCISE NICKNAME 56 ANBS E 335 001 0 2 EXERCISE MESSAGE ADDITIONAL IDENTIFIER 1 16 AB E 335 002 OPER C M 1 OPERATION CODEWORD 1 32 AB E 336 001 0 2 PLAN ORIGINATOR AND NUMBER 3 23 ANS E 925 001 0 3 OPTION NICKNAME 1 23 ANBS 585 001 4 SECONDARY OPTION NICKNAME 1 23 ANBS 585 002 MSGID M M 1 SHORT SUP MESSAGE TYPE l 20 ANBS
83. For our purposes communications will be in the form of JIN TACCS messages transmitted among CSSCS nodes 3 1 1 1 Connectivity Two types of networks are possible a fully connected network in which any node can contact any other node as needed or a polled network in which some nodes are only contacted by other nodes at specified intervals The TACCNET prototype is a fully connected system This choice was made to insure that important messages of high priority would not have to wait for a higher echelon node to call in order to be transmitted and processed In the prototype nodes call one another whenever they have messages to deliver They first check to be sure that a conversation with the desired system is not already in progress Priority messages get fastest possible service preempting routine messages or conversations if necessary In a polled system messages would have to wait half the polling interval on the average for the next call from the master sys tem regardless of priority The cost of a fully connected system is redundancy of capability increased sys tem complexity greater overhead in communications and increased usage of communications bandwidth A polled system would tend to cut down the number of calls and increase the size of the transmissions as larger batches of messages would accumulate between contacts The cost is mainly in the area of increased delay in propagating information through the system In the battl
84. IOControl Message Transmission While a functional message transmission scheme was developed under the pre vious contract this year s effort was aimed at revamping the system with the objectives of increasing both efficiency and data integrity To reach these goals the project designed a transmission protocol using the stop and wait technique of character oriented data communications protocols The object of the technique is to provide data transparency and error detection along with retransmission in case of errors Defined in the protocol are two types of packets data packets and control packets modeled after the BSC protocol The information in a data packet is surrounded by a packet header and checksum trailer for error detection The control information consists of single byte acknowledgement and inquiry codes and does not contain checksum information Embedded escape characters assure data transparency In the design of this communication system independence and transparency of the system itself were key issues The design does not rely heavily upon the exact environment in which the system is used This makes it more general If the down site calls in on its own it will be restored to the active list 39 TACCNET Technical Specification November 14 1986 than the application for which it was developed Although the im plementation deviates slightlyt from this goal it provides a clean machine to
85. In the AED a unit database was successfully backed up on two other nodes in the testbed network The original database was then deleted and recovery was effected from a remote node Broadcast messages were sent to other nodes resulting in retransmission of JINTACCS messages sent to the failed node after the backup date The desired messages were automatically recovered from remote system archives and retransmitted to the local system where they were posted to the C database The resulting database was then shown to be the same as the original database The backup and recovery were accomplished by the use of three commands on the local system Finally the TACCNET system was expanded to allow local emulation of remote units which have failed This allowed a unit to replace a failed unit by starting up an emulated node using the database backup from the failed unit Broadcast messages could be sent to get any subsequent messages for the failed unit and to inform other units that the substitution had taken place In this manner a remote node could take over the function of a failed local node and continue to answer queries and provide updates during the local node downtime Upon reactivation the local node could retrieve the current database from the remote node and resume activity 6 2 Advanced Experimental Demonstration 2 Task 2 entailed the conversion of TACCNET code on the Honeywell DPS 6 from PASCAL to C This was completed and the resultin
86. Interface Specification For Air Defense Control Element Interface With Combat Service Support Control Element 9 November 1984 ACCS A3 400 008 Interface Specification For Combat Service Support Control Element Interface With Intelligence Electronic Warfare Control Element 9 November 1984 ACCS A3 400 009 Interface Specification For Combat Service Support Control Element Interface With Fire Support Control Element 9 November 1984 ACCS A3 500 003 Army Command and Control Systems Character Oriented Message Format Standards June 84 ACCS A3 500 003 Army Command and Control Systems Character Oriented Message Format Standards Supplement 1 June 84 JINTACCS Technical Interface Design Plan Volume VIII Combat Service Support October 1984 JINTACCS Technical Interface Design Plan Volume VIII Combat Service Support Appendix E COM Text Formatting Rules June 1984 Human Factors In The Display Of JINTACCS Messages Tech Rep USAISEC RARA 85 2 D Sharpe and A Badre 9 October 1985 Analysis of the Data Processing Requirements of CSSCS Tech Rep USAISEC ASBG 85 1 M Graham 20 September 1985 CSSCS C Information Requirements 4 October 1982 Of JINTACCS and JABBERWOCKS Maj J Morrison and Maj R Case Signal vol 38 no 3 pp 55 58 November 1983 JINTACCS getting the message across Maj A Schenk Army Communicator Winter 1986 pp 12 20 How Secure is Secure G Grossman UNIX Revi
87. Item Model Quantity Unit Req fclose DataFp Close output data file Run DBLOAD to update values from message sprintf Command s file db isi Isi sp gt dev null 2 gt gt dev null DBLOAD DATAFILE system Command No way to check results right now return GOOD 20 putdtgm c Oct 30 10 52 1986 Page 21 include net h include server h int PutDTGM MsgFd FILE MsgFd int Year Month Day Hour Minute Second RealTime amp Year amp Month amp Day amp Hour amp Minute amp Second fprintf MsgFd 2d 2d 2d n Day Hour Minute realtime c Oct 30 10 52 1986 Page 22 int int int int int int int clude lt stdio h gt return current system date and time in integer values RealTime Year Month Day Hour Minute Second Year Month Day Hour Minute Second int retcode 1 default state is error FILE Fp FILE popen if popen date m S r NULL return retcode if fscanf 4 d Year Month Day Hour Minute Second 6 retcode 0 all is well pclose Fp return retcode request c Oct 30 10 52 1986 Page 23 include net n include server h Request build an input file for AMS to create a message int Request MsgType Unitid Imt DestPath Priority char MsgType ch
88. LogFd fopen LogFile a NULL fprintf stderr WriteLog Can t open Logfile fprintf stderr s s 45 s s n Date Pl P2 return ERR setbuf LogFd char NULL fprintf LogFd s s 5 s sXn Date Pl P2 fclose LogFd return GOOD Page 41 QMS This section contains the functions used only by the Queue Manager Scheduler program QMS Table of Contents Files Files File File File File File Makefile getdest c GetDest getsites c Thu Oct 30 10 52 09 1986 interrupt c InterrupL RA Sle eae ATP ees a movepri c MovePR qms c main usage ShutDown schedule c Schedule 9 9 9 9 9 9 9 9 9 9 O0 9 9 9 O6 0 Page Page 2 Page Page Page Page 11 Makefile Oct 30 10 52 1986 qms net h qms o schedule o getsites o ports o getdest o movepri o dequeue o getdir o lockfile o writelog o datetime o readsite o stripme o frename o interrupt o validsite o myname oN fileopen o state o givetomp o abort o putsite o qms qms o schedule o getsites o ports o getdest o movepri o dequeue o getdir o lockfile o writelog o datetime o readsite o stripme o frename o interrupt o validsite o myname o fileopen o state o givetomp o abort o putsite o strip qms qms o net h wait h qms c cc
89. NextSite gt SiteName i toupper NextSite SiteName i close Fd OnLine TRUE To maintain a global list of on line sites add code here addstr NextSite gt SiteName Display site name StandEnd move y COL2 if OnLine TRUE Don t try to say if OnLine on line Lock PORTTABLE Don t care if it fails ave y COL3 if pou GetPorts NULL addstr error UnLock PORTTABLE else UnLock PORTTABLE Found 0 for i 0 Found amp amp PortList i NULL i status c Oct 30 10 51 1986 Page 54 if stremp PortList i Site NextSite gt SiteName 0 Found 1 if Found int j for j strlen PortList i 1 Port j gt 0 j if PortList i 1 Port j break for 1 PortList i ll Port k NO k addch PortList i 1 Port k Display port else addstr dialin Site must have called us PSFree PortList else if NextSite gt SysType EMULATED addstr emulated else switch NextSite gt Status Display site status case DOWN addstr DOWN break case RETRY addstr retry if NextSi te NumCal 1s printw d NextSi te NumCalls break default break Find out how many entries are in the system s queue NumFiles QueueSize NextSite gt SiteName Get site s queue size move y COL4 if NumFile
90. SCENARIO II Scenario II uses the message 5654 Suppiy Shortages This message may be used in two ways way is to report status of selected supplies anc the actions beinp taken to procure them The aether way is to request information an the status of selected supplies The interface specifications show thet this message is used across the interfaces to FS and eh in a mode and transmitted only to ADA MCS has no requirement for this message The internal usage of this message 08183 shows this message ficwing from functional organization vo FSB DMMC CORPS SPT GF anc COSCOM In this scenario the information on supply status is resident on the DASZ DASZ periodically would update the command and control data base the status of previously identified supply items The command and control gata base is resident on the DMMC TACCS A message requesting supply status will be received by the SFO This request for information must then serviced 1 Manually initiate on the 0953 a message giving the status of selected supplies for various units c Send the message to the DMMC 3 DMMC places the information in the Ce data base 4 SFO receives 5034 Supply Shertage Request frem Fire Support This 16 simulated through the use of a screen display data entry Je SPO forwards request to DMC 6 DMMC receives 5224 Supply Shortage from SFO ru Ch ni ct 7 Human operator reviews 5034 a
91. SiteName NULL Site is invalid WriteLog Schedule invalid site SiteName return ERR else see if site is UP or DOWN if Condition State Site UP could be RETRY or DOWN if Type PRIORTYPE schedule c Oct 30 10 52 1986 Page 12 if DebugLevel WriteLog Schedule recall time not reached for SiteName if Condition DOWN need to forward messages GiveToMP SiteName Free storage for site some day return GOOD else if DebugLevel WriteLog Schedule scheduling priority call for SiteName possibly down Site TimeToCall NOW Reset to try to call again Site gt Status UP Force caller to poll site PutSite Site Storage for site freed arrive here if site is UP or retry time has elapsed if Lock PORTTABLE ERR WriteLog Schedule Can t lock PORTTABLE return ERR if PortList GetPorts 0 NULL uses malloc to get storage Writelog Schedule can t get port list GoodByel n UnLock PORTTABLE return ERR strcpy SeizeSite strcpy SeizePort strcpy PortName for i20 PortList i NULL i i if we are already talking to the Site we can quit if EQUALS PortList i Site SiteName i Talking TRUE break make note of first available port if PortList iJ gt State AVAILABLE amp
92. These data items may be related to one another in many to many ways or may be totally unrelated e data will be shipped around in JINTACCS messages between CSS units subject to modification and aggregation on a daily basis e Operators may need to execute relational queries on the database to gen erate custom reports for decision support or message construction e database should be easy to use since it is expected to be used by many different people at many different sites We conclude that for the C Database the relational model is a better choice than other models It is desirable to minimize complexity in the system The use of two separate database systems on the TACCS would increase complexity and might cause problems due to storage and memory limitations on the machine Further more the two different database models are not usually supported in a single commercial system Thus it was decided that the relational model be used for the whole system The Message Database can be implemented in a relational system if a program is provided to use the message relations in the right hierarchical manner It was necessary to add fields to some relations to deter mine precedence of sets within messages and fields within sets since the con cept of item ordering is not native to relational systems Note that the amount of redundancy introduced in our relational database due to the use of the relational model is not too la
93. Total 470 Expenses Expenses for the period were solely in the category of salaries salaries of professional research personnel are clas sified as Professional Expenses Salaries of student assistants are classified as Staff Expenses A breakdown is given below Professional Expenses 4 500 00 Staff Expenses 2 600 00 Total Expenses 7 100 00 Work Completed Item Complete C2 Database Backup and Recovery System design 75 Initial code development 0 Remote backup system 0 Database recovery 0 Archive search amp retrieval 0 Alternate database site operations 0 Testing and integration 0 Work for Task 1 10 DPS 6 PASCAL to C Conversion Source code transfer 80 IOControl system 10 Caller 0 GenMsg 0 Integration with 0 Work for Task 2 15 Technical Specification 0 Performance and Cost Report Contract Number DAHC06 85 C 0012 Project Number G 36 633 Georgia Institute of Technology December 1 1985 to December 31 1985 Meetings and Presentations Regular meetings were held to exchange information present results In addition planning sessions were called as needed The briefing scheduled for Dec 18 was canceled It will be rescheduled at a later date Bill Putnam will work on preparing a high level presentation on TACCNET to supplement the existing technical briefing Plans Complete coding for database backup and recovery system Resolve problem with Honeywell C compiler program linki
94. UnLock SITETABLE return ERR scan through file until site found or EOF reached getc SiteTableFd skip first colon do fscanf SiteTableFd Zs Name get a site if EQUALS SiteEntry gt SiteName Name it is the one we seek copy the site status information offset ftell SiteTableFd fgetc SiteTablFd fseek SiteTableFd offset 0 reset for output fprintf SiteTableFd 7 14 7 14 914 SiteEntry gt Status SiteEntry gt NumCalis SiteEntry gt TimeToCall felose SiteTableFd if DebugLevel WriteLog PutSite SiteEntry gt SiteName has been modified nm 3 UnLock SITETABLE free SiteEntry release the storage return GOOD exit and indicate successful copy else advance to start of next site entry SkipEOL SiteTableFd skip to next line EOF c gete SiteTableFd read first character while c FIELDMARK amp amp c EOF while c EOF we wind up here if the site is not defined WriteLog PutSite SiteEntry gt SiteName not defined in SITETABLE fclose SiteTableFd UnLock SITETABLE free SiteEntry release the storage return ERR exit and indicate error PATH ZSYS72Z2 gt UDD gt GOLDBERGOUNIX gt RDSITE C TIME 1987 02 12 1659 14 0 finclude net h site RdSite Fd FILE RdSite read a site entry from the
95. ding on availability The hours spent on the project are classified and allocated into five categories A breakdown of labor for the period is given below Category Hours Administration 50 Planning amp Design 80 Prototyping amp Testing 100 Programming amp Debugging 120 Documentation amp Reporting 20 Total 370 Expenses Expenses for the period were solely in the category of salaries Salaries of professional research personnel are clas sified as Professional Expenses Salaries of student assistants are classified as Staff Expenses A breakdown is given below Professional Expenses 4 500 00 staff Expenses 1 600 00 Total Expenses 6 100 00 Work Completed Item Complete C2 Database Backup and Recovery System design 95 Initial code development 100 Remote backup system 99 Database recovery 60 Archive search amp retrieval 50 Alternate database site operations 70 Testing and integration 30 Work for Task 1 55 DPS 6 PASCAL to C Conversion Source code transfer 100 IOControl system 80 Caller 80 GenMsg 5 Integration with TACCNET 30 Work for Task 2 45 Technical Specification 5 Performance and Cost Report Contract Number DAHC06 85 C 0012 Project Number G 36 633 Georgia Institute of Technology March 1 1986 to March 31 1986 Overview Work continued on the Honeywell PASCAL to C conversion Modification of low level I O routines is complete and testing has begun The next phase will involve the convers
96. entries close DirFd return ERR Entries filename malloc NFILES sizeof fi 1 read all the file names from the directory into an array while read DirFd amp DirEntry sizeof struct direct O if DirEntry d ino ino t 0 amp amp DirEntry d name 0 DOT strcpy Entries Num DirEntry d name copy file name Entries Num 0 mark end of list with null string close DirFd read directory listing from the archive and check all files on list for i 0 XEntries i NO amp amp i lt Num i if DebugLevel 2 WriteLog Recover checking Entries i in ARCHIVEQ build the full pathname of the file sprintf FilePath s s ARCHIVEQ Entries i get creation date of file if stat FilePath amp StatBuf GOOD i WriteLog Recover cannot stat FilePath if terrcount gt 10 free Entries return ERR continue if msg date is later than backup date check destination if StatBuf st mtime gt BackUpDate i if Fp fopen FilePath r NULL i WriteLog Recover can t open FilePath if errcount gt 10 free Entries return ERR continue next iteration of while loop SkipEOL Fp skip the priority line fscanf Fp 6 DestPath read the destination path fclose Fp if DebugLevel 2 i WriteLog
97. exit BADCONNECTION Move site name to caller s storage NOTE may still be bad data strncpy RemoteName ResponseBlock BlockLength We allow unknown sites to log in since sites may come amp go using administrative messages to change our tables They still have to get in through password security at the login level if ValidSite RemoteName NULL Validate the site before going on WriteLog WaitName UNKNOWN SITE RemoteName FlushModemInput ModemFd free ResponseBlock Get rid of unneeded storage smart SendByte ACK Transmit acknowledge signal PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt WAITNQ C TIME 1987 02 12 1731 28 7 finclude net h finclude iocontrol h include iocontrol e WaitEnq wait for an enquire signal from remote system and return error status if timeout occurs Send acknowledgement signal if enquiry received This establishes synchronization with remote after local system is activated int WaitEnq unsigned char ResponsePacket From getpacket allocated therein int PacketLength Needed for call to getpacket unused register int Count 0 retry counter while Count lt MAXRETRY if ResponsePacket GetPacket amp PacketLength NULL DebugLevel WriteLog WaitEnq Timed out waiting for else if ResponsePacket z ENQ break else free Response
98. fprintf stderr NhnSET 10 s SETID addinode L SETID FIELD handler L SETID CAT i f getout getout FALSE break else fprintf stderr NnSET ID s SETID addlnode L SETID FIELD handler L SETID FIELD Handler FIELD handler STYP SET D SCAT char 9 char SETID SCAT char 6 data field identifier char data usage identifier char FCAT 4 cat struct char SID 8 int FLDKEY retrieve each field id in the order of field no add field node ams c Oct 30 10 50 1986 Page 16 pos 1 strncpy FLDKEY SID bl pad SETID 8 8 for FLDKEY FNOs1 acckey field amp FLDKEY FLDKEY FNO gfield fcat FCAT FCAT 3 0 gfield fname FNAME 40 0 gfield fdfi DFI DFI 5 0 gfield fdui DUI 001 31 NO switch STYP case C columnar set gfield fcol SCOL J ScOL J 3 0 handler C DFI DUI SETID SCAT FLDKEY FNO FCAT break case L linear set DFI handler L DFI DUI SETID SCAT FLDKEY FNO FCAT break if getout break case C add csd node SCAT break case L if pos lt FLOKEY FNO dellslist ptrpos else if getout TRUE amp amp pos FLDKEY FNO delislist ptrpos break DF Handler handler KIND FDF FDUI SETID SCAT F
99. gt Next gt Prev NULL else ptr gt Prev gt Next ptr gt Next if ptr gt Next NULL list c Oct 30 10 51 1986 Page Lk ptr gt Next gt Prev ptr gt Prev peque delete the linear set list followed by the node pointed to ptr 2 and all the sublists a a dellslist ptr2 Isnode ptr2 if ptr2 gt Next NULL dellslist ptr2 gt Next dellsnode ptr2 delete the columnar set list followed by the node pointed to ptrl2 and all the sublists delcsflist ptr2 csfnode ptr2 i if ptr2 Next NULL delcsflist ptr2 Next delcsfnode ptr2 list c Oct 30 10 51 1986 Page indirectly recursive with del2list delete the columnar set node pointed to by 2 and all its children E delcsfnode ptr csfnode ptr i if ptr fchild NULL delcsdlist ptr fchild if ptr Prev NULL if ptr gt Next NULL ptr gt parent NULL else 1 ptr gt parent gt uval cschild ptr gt Next ptr gt Next gt Prev NULL else ptr gt Prev gt Next ptr gt Next if ptr gt Next NULL ptr gt Next gt Prev ptr gt Prev delete the columnar set data list followed by the node pointed by 2 and all the sublists de
100. ifdef PREEMPTION First of all check to see if a higher entity requests the line if Preemption QueueName We must relinquish this line SendByte EOT Other system will understand WriteLog SendFile INTERRUPTED while sending filepathname exit INTERRUPTED fendif BlockSize 0 while BlockSize lt BLOCKLENGTH Blocks may overrun by at most 1 if getc FileFd EOF break Exit the loop if end of file within a block c amp unsigned int Oxff Just keep the bottom 8 bits if c DLE Check for data link escape in file BlockPtr BlockSize Go ahead if Vn BlockPtr BlockSizet Insert carriage return BlockPtr BlockSize c Place character in block We have a block now transmit it EndOfText c EOF We read an end of file end with ETX if SendBlock BlockPtr BlockSize EndOfText Send amp Wait n n DE WriteLog SendFile Timeout awaiting acknowledgement 3 WriteLog SendFile Could not transmit filepathname FileFd return ERR Probably lost contact WriteLog SendFile message filepathname sent OK free BlockPtr Free storage now fclose FileFd return int NULLI EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt SENDHE C TIME 1987 02 12 1716 48 5 finclude net h inc
101. information about that message from the Message Database and use it to gen erate the correct prompts 54 TACCNET Technical Specification November 14 1986 The remaining sets and fields of the Initial Main Text IMT of the message will appear as prompts for the user Once the IMT is complete the system begins prompting for information specific to the chosen message Information from the Message Database is used to determine the type of each set linear columnar or free text and the number and nature of the fields in the set Appropriate prompts are presented using information from the data field identifier dfi for each field In general fields can be skipped simply by pressing the CR key except for mandatory fields For a mandatory field a warning message requires entry of data as prescribed Another general rule is that any non mandatory set can be terminated by typing double slashes followed by a carriage return A created message is stored in a multi level linked list When it has been created successfully the portion of the linked list for the message is displayed on screen for verification purposes Finally the message is converted into JIN TACCS format for transmission It is desirable in many cases that a message be automatically created using database information without human intervention Automatic message creation can be triggered by typing jtsend msgid lt prionty gt destination where msgi
102. ing them 63 TACCNET Technical Specification November 14 1986 4 3 4 Maintenance Associated with the TACCNET software are several data files which contain in formation about remote system names phone numbers retry times and local system parameters Editing these files can change such parameters and enable the system administrator to keep configuration information current and con sistent with changes at other sites This section details the layout of these data files so that changes can be made to them using any text editor It is suggested that changes be made only when the system is not active The section entitled User Interface discusses one method for maintaining these configuration files All of these files should be examined before the system is started to make sure they are proper If the system is aborted there is a chance that some status information will be incorrect when the system is restarted The shell file com mand cleanup mentioned previously avoids most of these problems by restor ing tables sites and tables ports from their respective save files Fig ure 4 5 is a diagram of the TACCNET system directory structure once installed in a given root directory The following sections explain file formats and maintenance information for the files depicted in the diagram root directory Td msgprocq tables serverq sysa other node queues myname altsites paths sites
103. jms c Oct 30 10 51 1986 Page 27 x HRI KIKI RIK ERIK Create a JINTACCS Message Message Level or Level 0 ye 3e 9e de 9 de de de Jefe de ede de fe de dede e Jede Je dex de dee vede dede de eee dee dede de de eee e de Je de dee Je desee e Jede ee Jede ye create JIN msg char labell 16 1abe12 71 char option 5 EXER or OPER char ALEXER 11 message alias for EXER char ALOPER 11 message alias for OPER char ALELSE 11 message alias for OTHERS touchwin main box win wrefresh main box win wclear main win wrefresh main win addOnode labell label2 wprintw main win Enter EXER or OPER gt wrefresh main_win wget_string main_win option if EQUALS 61 _ option EXER strcpy EXER SET Handler ALEXER Build up Introductory Text Sets for EXER else if EQUALS 61 _ option OPER EQUALS bl sup option oper i strcpy ALOPER ITXT OPER SET Handler ALOPER Build up Introductory Text Sets for OPER else strcpy ALELSE ITXT ELSE SET Handler ALELSE Build up Introductory Text Sets for OTHERS wclear main win wrefresh main win SET Handler ALIAS Build up Main Text Sets of Message SWITCH 1 end of create JIN msg jms c Oct 30 10 51 1986 Page 28 X mmmmmmmmmIlemm mImmmcAI
104. messages required to back up and recover the files by a set of shell scripts which will be invoked as command files Personnel Alton P project administration William Putnam project management and design Steven Coldberg system design and development Shinn Hong Siers dde eae wee ER research assistant There are two professional researchers involved with the project Bill Putnam works full time as project manager and chief software designer Alton P Jensen works one quarter time as project administrator There are two students working part time on this project They carry work loads ranging from 12 to 20 hours per week depen ding on availability The hours spent on the project are classified and allocated into five categories A breakdown of labor for the period is given below Category Hours Administration 50 Planning amp Design 80 Prototyping amp Testing 100 Programming amp Debugging 100 Documentation amp Reporting 28 Total 358 Expenses Expenses for the period were solely in the category of salaries Salaries of professional research personnel are clas sified as Professional Expenses Salaries of student assistants are classified as Staff Expenses A breakdown is given below Professional Expenses 4 500 00 Staff Expenses 1 480 00 Total Expenses 5 980 00 Work Completed Item Complete C2 Database Backup and Recovery System design 80 Initial co
105. mv iocontrol o iocontrol o cc 0 c DFORHONEY iocontrol c cp iocontrol o iocontroih o mv iocontroi o iocontrol o checksum o checksum c cc 0 checksum c getblock o getblock c iocontrol h cc 0 c getblock c getblockh o getblock c iocontrol h Makefile Oct 30 10 51 1986 Page mv getblock o getblock o cc 0 c DFORHONEY getblock c cp getblock o getblockh o mv getblock o getblock o getfileh o getfile c iocontrol h mv getfile o getfile o cc 0 c DFORHONEY getfile c cp getfile o getfileh o mv getfile o getfile o getpacket o getpacket c iocontrol h cc 0 c getpacket c preemption o preemption c iocontrol h cc 0 c preemption c send o send c iocontrol h cc 0 send c sendh o send c iocontrol h mv send o send o cc 0 c DFORHONEY send c cp send o sendh o mv send o send o sendblock o sendblock c iocontrol h cc 0 c sendblock c sendblockh o sendblock c iocontrol h mv sendblock o sendblock o 0 c DFORHONEY sendblock c cp sendblock o sendblockh o 2 mv sendblock o sendbiock o sendbyte o sendbyte c iocontrol h cc 0 c sendbyte c sendbyteh o sendbyte c iocontrol h mv sendbyte o sendbyte o cc 0 c DFORHONEY sendbyte c cp sendbyte o sendbyteh o mv sendbyte o sendbyte o sendenq o sendenq c iocontrol h CC 0 c sendenq c sendname o sendname c iocontrol h 0 c sendname c sendfileh o sendfile c iocontrol h mv sendfile o sendfile o cc 0 c D
106. poi nt to start of list of columns print one line of data tabbing to column fields for k 0 fptr k indent appropriately and print data atoin fptr gt colpos strlen fptr gt col pos 1 LR strlen fptr gt colpos switch fptr gt colpos LR 1 tab to next field case L case R for i n i putchar break m ntstrlen fptr gt colhdr strlen dptr k csdata for i lt m i putchar break printf s dptr k csdata i i str len dptr k gt csdata 1 dptr k dptr k next fptr fptr gt next printf n pen disp c Oct 30 10 50 1986 Page 32 SS SS SS SS 2525S S SSS 2222S SSS SS 1 Get the field level data from the linked lists 2 Display them on screen SSS SSS SSS SS SS SS SSS SS SS SS SS SS SSS SSS dsp free set ptr tsnode ptr int k 0 while ptr gt tstext k printf Ss ptr gt tstext k k if ptr gt tstext k printf form c Oct 30 10 50 1986 Page include 5 ees SSS SEH SS SS SE eS SS 1 Get the message data from the linked lists 2 Convert them into standard output format int convert i listl ptrl ptro fprintf stderr Xn ERROR No message found retur
107. ptr malloc strlen 1 allocate storage strcpy ptr TempBuf copy the string return ptr return a pointer to the string hangup c Oct 30 10 50 1986 Page include extern int ModemFd extern int DebugLevel int HangUp SysType char SysType i Sends a hangup command to the modem int n Done char FromModem 10 int GoodHangup FlushModeminput ModemFd sleep 3 write ModemFd ESCAPESTR strlen ESCAPESTR sleep 2 write ModemFd 1 Make sure modem is at beginning of line sleep 1 FlushModeminput ModemFd write ModemFd HANGUPCMD strlen HANGUPCMD GoodHangup TRUE if ReadStr FromModem NULL i WriteLog HangUp No response to hangup command m write ModemFd HANGUPCMD strlen HANGUPCMD GoodHangup FALSE else if EQUALS FromModem ZERO WriteLog HangUp response to hangup command was FromModem write ModemFd HANGUPCMD strlen HANGUPCMD GoodHangup FALSE if DebugLevel amp amp GoodHangup WriteLog HangUp hung up the phone uH write ModemFd RESETCMD strlen RESETCMD reset modem for uucp return TRUE hung up the phone OK 15 login c Oct 30 10 50 1986 Pages 16 include net h include iocontrol h define WANTLOGIN O define GOTLOGIN 1 define WANTPASSWORD 2 define GOTPASSWORD 3 define CONNECTED
108. s i i s i upchar s i return 5 conv c Oct 30 10 50 1986 Page 22 del c Oct 30 10 50 1986 Page finclude ams h functions to delete nodes and lists indirectly recursive with del2list delete the node pointed to by ptrl2 and all its children dellsnode ptr ptr if ptr gt fchild NULL dellslist ptr gt fchi ld if ptr gt prev NULL if ptr next NULL ptr parent uval lschild NULL del Inode ptr gt parent else ptr gt parent gt uval Ischild ptr gt next ptr gt next gt prev NULL else ptr gt prev gt next ptr next if ptr gt next NULL ptr gt next gt prev ptr prev delete the ist followed by the node pointed to by ptr12 and all the sublists dellslist ptr2 Isnode ptr2 if ptr2 gt mext NULL dellslist ptr2 gt next dellsnode ptr2 23 del c Oct 30 10 50 1986 Pase delete the list followed by the node pointed to by 12 and all the sublists delesflist ptr2 csfieldnode ptr2 if ptr2 gt next NULL delcsflist ptr2 next delcsfnode ptr2 indirectly recursive with del2list delete the node pointed to by ptrl2 and all its children nR n __ __ _
109. target max char str String to be displayed as prompt char target int max int int Count 0 wmove Command 1 0 Move to the command line wclrtoeol Command Get rid of command line menu target 750 Force empty string in case of error wmove Command 1 0 waddstr Command str Display the prompt wrefresh Command Top while Count max wgetch Command Read a character of user s response if c int Nn c int Nr target Count NO Terminate string return else if c User hit ctrl u target O 0 return else if c 0x08 User hit backspace if Count Count Back user up waddch Command c wrefresh Command waddch Command wrefresh Command waddch Command c wrefresh Command continue Reiterate else continue waddch Command c Echo user s response wrefresh Command emdprompt c Oct 30 10 51 1986 Page target Count char Construct result string waddch Command int Let user know he s at margin Count waddch Command 0x08 Back up one wrefresh Command waddch Command wrefresh Command waddch Command 0x08 wrefresh Command goto Top 16 console c Oct 30 10 51 1986 Page 17 fdefine MAINPROGRAM finclude console h fx Console TACCNET system consol
110. 0 if i 0 amp amp strlen bl sup tempbuf 0 EMPTY TEXT TRUE if DONE amp amp strlen tempbuf 0 continue else longtext i malloc 1 1 strcpy longtext i tempbuf i longtext i char 0 we lear msg win wrefresh msg win 33 jms c Oct 30 10 51 1986 Page 34 Validity Checker for data format and value 2esSesss2e282225 5522225523225 VALID DVAL NOTYP char DVAL char NOTYP i check if DVAL is valid i e check if the value of DVAL is within the valid range and its type is valid return 1 Draw a frame for a window int Frame win WINDOW win wstandout win wmove win 0 0 wprintw win 80 for 1 lt gt 1 wmove win y 0 wprintw win wmove win y win maxx 2 wprintw win wmove win win maxy 0 wprintw win 80c wstandend win jms c Oct 30 10 51 1986 Page Put a header at top of the frame int header win str rvid WINDOW win char str int rvid if rvid wstandout win wmove win 0 win maxx strlen str 2 wprintw win s str if rvid wstandend win Put a footnote at bottom of the frame int ootnote win str rvid WINDOW win char str int rvid if rvid wstandout win wmove win win 1 win max
111. 0 Reenter waddstr msg win fptr fdname wrefresh msg win wmove main wrefresh main win wget string main win str FIRST FALSE if EQUALS b1_sup str N0 strcpy str if 0 amp amp EQUALS str break while k O amp amp EQUALS sup str wclear msg win D mvwaddstr msg win 0 0 The set is MANDATORY mvwaddstr msg 1 0 waddstr msg win fptr fdname wrefresh msg win wmove main win y n wrefresh main win wget string main win str node k csdnode malloc sizeof csdnode data space if fptr gt fchild NULL first field node in list fptr gt fchild node k node k gt Prev NULL node k Next NULL node k parent fptr strcpy node k gt csdata str pere node k else al following field nodes node k Prev dptr node k Next NULL node k parent dptr k gt parent dptr k gt Next node k strcpy node k gt csdata str Adds node k fptr2zfptr Next end of for end of while Test if the columnar set has some data in it list c Oct 30 10 51 1986 Page 42 fptr ptrl gt uval cschild while fptr if fptr gt fchild NULL fptr fptr gt Next else i LIVE TRUE break if 1L1VE del inode ptr 1 Add a node for the free text set
112. 23456789012345678901 2345678901 23456 7890123456789 KDTGRPTN NNNIHNN AAXNNH 1 2 KUNITCAS XXXXXXXXXXXXXXXXXXXXXXXX ACTKIA NNNX NNNX ACTMIA NNNX 1 2 3 4 XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX CTHBC NNNX CTPERS HHNX 5 6 SKCASLTY MILPERCL ACTKIA ACTWIA ACTMIA ACTNBC CTPERS NNNX NNNX NNNX NNNX 3 4 5 6 5KHOSCAS 551 05 ACTUIA CTPERS NNANX NNNX NHNX NNNX NNNX 2 3 4 5 6 NNANX NNAXX RMKS DUNGRADE AAAXXXXXXXXXXXXXXXXXXXXXX l t PAGE 2 OF 2 D 4 JI 861 ANAC 00 005 V S22V June 1984 Page 1 of 1 MESSAGE EXAMPLE MESSAGE NUMBER 5006 TITLE Casualty Information Report CASSTATS UNCLAS EXER BALD EAGLE 88 MSGID CASSTATS 8 INF BN KDTGRPTN 180700 N01808 KUNITCAS 8 INF BN ACTKIA 12 ACTWIA 18 ACTMIA 1 ACTNBC 1 CTPER 32 SKCASLTY MILPERCL ACTWIA ACTNBC CTPERS 0 1 4 5 W 1 1 11 14 1 26 5KMOSCAS 551 05 ACTWIA ACTMIA ACTNBC CTPERS 11B41 1 4 5 630A0 1 1 11810 8 10 18 115320 2 3 1 6 11B30 1 1 2 ACCS A3 500 003 June 1984 Sup MESSAGE INSTRUCTIONS Page 1 of 2 MESSAGE NUMBER 5034 TITLE Supply Shortages SHORTSUP GENERAL INSTRUCTIONS This message is used to report the identification of supplies which because of their shortage could affect the effectiveness of a unit It can be used by bot
113. 35 ReadSite oA x E ees 35 File receive c Page 36 RECEIVE ee ed dos 36 Aalrmint EE PER NEQUAM NEU T EE iS neis 36 File remove c Page 37 REMOVE uou EU RC RUE E 37 File state c Page 38 ci ev Saree wae 38 File stripme c 39 5 39 File validsite c Page 40 Va VAST 29555 2 21 99 93 9 4 2 Lo File writelog c Page 1 1 shed aie Y Wd AURA RU E eA I Rd aM 11 Makefile Oct 30 10 50 1986 Page 1 common stripme o myname o remove o fileopen o fileng o newfile o datetime o validsite o readsite o lockfile o frename o dequeue o getdir o writelog o givetomp o ports o state o receive o receiveh o archive o putsite o abort o links In net h iocontrol h iocontrol e wait h sysdef h retcodes hN datetime o dequeue o getdir o fileopen o frename o givetomp o lockfile o myname o ports o readsite o receive o state o putsite o validsite o writelog o caller In net h sysdef h datetime o filenq o fileopen o lockfile oN myname o newfile o readsite o stripme o validsite oN writelog o genmsg In net h sysdef h abort o datetime o dequeue o getdir o filenq oN fileopen o frename o lockfile o myname o newfile o readsite o remove o stripme o validsite o writelog o archive o msgproc In net h wait h sysdef h abort o datetime o dequeue o getdir o fileopen o frename o givetomp o lockfile o myname o ports oN
114. 360K floppy disk a minimum of 10 mega bytes of hard disk storage The minimum memory required to run the system is 512K bytes The GCOS part of the system is installed on a Honeywell DPS Level 6 minicom puter 4 1 2 Operating Systems All software for the TACCS has been written in the C programming language and developed under the ONYX and XENIX operating systems Each of these systems is a derivative of the UNIX operating system The software will run without modification on any UNIX System III machine Software for the DAS3 has been written in C and developed under the GCOS Mod 400 operating system using the M4 CC compiler While there are differences in implementation details between the GCOS and UNIX versions of TACCNET the functionality at the communications and protocol level is the same The message processing and network management levels have not been implemented in the GCOS version 4 1 3 Communications Equipment The modems employed in the development and demonstration of the prototype system are D C Hayes Smartmodem 1200 standalone modems These modems are auto dial auto answer programmable asynchronous 1200 bps dev ices intended for use with voice grade telephone lines The TACCNET software uses Smartmodem commands to program the modem and dial the phone thus requiring the use of the Hayes Smartmodem on all dalout lines Any auto answer modem could be used for dalin lines Each TACCS system must have a
115. 37 27 File printtitle c Page 39 2255 ern a 39 File queuesize c Page 40 QueueSize eaae p a Mts at E 10 File readfile c Page 4 ReadFile Pid aed eu d RO eee ar 4 File redraw c Page 42 ReDraw NUN RUE eii RECS Roe 42 File runshell c Page 43 Runsheldl 4535524 3 a ARCANO AERE S NEN UN ERU E d 13 File saveconf c Page 45 SaveConf 3 592 88 2 45 File select c Page 46 Select jv EET Db Lid RETE Pe eee DRE 46 File startup c Page 47 StartUp File status c Page 50 5 Local EXW T uA aac RR RCRUM ACA ese 55 File tailfile c Page 56 TailFile Ee o E deir aes 56 SCUBUZZE 55 458 tau 5 File update c Page 58 Update ERE iN e torn Auer TET 58 File usershell c Page 59 UserShell 9 9 99 9999 9 9 99 999 99 9 9999 59 Table of Contents Thu Oct 30 10 51 19 1986 File view c Page 61 BL MED PEUT File writeconf c Page 63 WEEEECONE a EEUU 63 File writelog c Page 64 WELILBLOG ES P 64 Makefile Oct 30 10 50 1986 Page console console o startup o initwindow o getmenu o perform o update o
116. CSSCS AED program This system is described to illustrate the main issues in CSSCS communications and is not to be considered as a fieldable system It is a starting point for further development It is not expected that the reader of this report will be t The versions are AT amp T System Vr2 AT amp T System III IBM XENIX 1 0 SCO XENIX V ONYX Onix V PC IX DISTRIX 2 0 and 1 0 i The machines IBM PC XT PC AT Burroughs B26 ONYX AT amp T 3b2 28 TACCNET G36 633 Final Technical Report April 28 1987 fully able to understand and operate the TACCNET system It will probably be necessary to study the system source code in order to fully understand the sys tem The TACCNET development team at Georgia Tech will be happy to answer any questions and provide any assistance necessary Appendix 2 to this report contains the demonstration scenarios used in the Advanced Experimental Demonstrations presented during the project Copies and descriptions of the JINTACCS messages used in the AEDs are provided Appendix 3 contains copies of viewgraphs used in a presentation about TACCNET These will be helpful in understanding the system Appendix 4 contains high level data flow diagrams for the major TACCNET sys tem components These will aid in understanding the interactions of the TACCNET subsystems 99 TACCNET G36 633 Final Technical Report April 28 1987 9 1 2 4 5 6 17 8 19 10 1
117. E PTT 2 dellnode 525559452005 ERES 27 File disp c Page 29 display ie ee 29 dsp IIM SEE asic es vw CC REA ec SUUS 30 dsp col set n P enm 30 dsp csdata 4 31 free set 99 99 949 9 9 4 9 5 a 32 able of Contents Thu Oct 30 10 50 23 1986 File form c 33 convert 99 ISITSET 33 convcsflist Tr CONVCS ii SE ava WR CREER CONV ES OGG i tas o RC TCR AL VIR o tee a 35 File inp c Page 37 p CELA ARCA ORA SOROR 37 Makefile Oct 30 10 50 1986 UCOMPzS UNIFY bin ucc ULOAD UNIFY bin uld clean rm f ams o ams ams h ams o add o del o disp o form o conv o inp o blanks o ULOAD ams ams o add o del o disp o form o conv o inp o blanks o strip ams ams o ams c ams h def file h sysdef h ams e UCOMP c Mm ams c add o ams h c Mm add c del o del c ams h cc c Mm del c disp o disp c ams h cc c Mm disp c form o form c ams h c Mm form c blanks o blanks c ams h cc c Mm blanks c conv c ams h cc c Mm conv c inp o inp c ams h cc c Mm inp c Page ams e Oct 30 10 50 1986
118. Expand 0 i char Temp 80 Storage for returned ASCI window number int Wi ndowNum Mindow that is desired to span two windows CmdPrompt Enter window number to expand 1 4 Temp 80 if strlen Temp WindowNum Temp 1 Conver to integer if GoodWindow Wi ndowNum Window must be open to be expanded return switch WindowNum Establish correspondence between similar windows case 0 OtherWindowNum 1 Windows O and go together break case OtherWindowNum 0 break case 2 OtherWindowNum 3 Windows 2 and 3 go together break case 3 OtherWindowNum 2 break default return Make sure corresponding other window is closed if GoodWi ndow OtherWi ndowNum i CmdPrompt new window would overwrite an existing window Is this OK Temp 80 if 01 y amp amp Temp O Y return Window OtherWindowNum Good FALSE Close other window getconf c Oct 30 10 51 1986 Page include console h GetConf restore configuration from saved configuration file void GetConf i char ConfFileName 80 Configuration file name int 1 CmdPrompt Enter configuration file name ConfFileName 80 if strlen ConfFileName ReadFile ConfFileName Read configuration file Redraw screen based on new configuration for i 0 i lt MAXWINDOWS i wclear
119. FDESC 7 0 add 15 61 sup FDNO bl sup FCAT bl FNAME bl sup FDESC sup LRJ bl sup NOTYP break end of switch end of handler Free Text Input Handler SSS ST SSS SESE SS SSS SSS SS SS SSS HSS SSS SSeS ss SHEE Kk freef handler char freetext freetext char X malloc MAXLINES 1 sizeof char readtxt freetext if EMPTY TEXT dellnode 1 else add ts node freetext 4442 2 24 Read a free text set in amp readtxt longtext char longtext register int 1 0 register int len 0 register int DONE FALSE register int line column char tempbuf 81 EMPTY TEXT FALSE getyx if y lt MWLINES wmove main win y 1 0 else waddch main win Xn wmove main 0 wrefresh main win print imsg Enter free text and terminate with while DONE longtext i char 0 wget string main win tempbuf getyx main win y x if y lt MWLINES 1 wmove main win y 1 0 else waddch main win n wmove main win y 0 wrefresh main win len strlen tempbuf if EQUALS tempbuf len 1 i DONE TRUE tempbuf len 1
120. Isnode ptr i int i col 5 while for 1 0 i col i putchar printf Ss s n ptr gt fdname ptr gt fval dsp_lin_set ptr gt fchi 1d ptr ptr gt next col 5 1 Get the field level data from the linked lists 2 Display them on screen dsp col set head csfieldnode head int i csfieldnode ptr ptr head whi ptr atoin ptr gt colpos strlen ptr gt colpos 1 for i n i putchar printf s ptr gt colhdr i i strlen ptr gt colhadr 1 ptr ptr next disp c Oct 30 10 50 1986 Page 31 1 Get the field level data from the linked lists 2 Display them on screen 5 055055 Na a a a a a a a n _ _ dsp csdata head csfieldnode head int Es uds int LR m csfieldnode fptr csdatanode printf fptr head point to the head of column list for j 0 fptr j count the columns fptr fptr gt next allocate storage for pointers to column lists dptr csdatanode malloc j sizeof csdatanode set pointers to column lists for 0 fptr head fptr amp amp k lt j 3 k dptr k fptr fchi d fptr fptr next while dptr 0 for each line of data in column lists 1 fptr head
121. MESSAGE NUMBER 5026 TITLE Q9E POL LOCATIONS POLLOC SET IDENT DTGM 0 SKCLTHRE AMPN RMKS DWNGRADE CAT M M o e gt Omm FIELD NO Cn gt hoe MANDATORY ENTRY FLD DESC COL HEADER DE PTNAME LOCATION LOCATION LOCATION UNITLOC LOCATION DE FUEL QTY TYP 011 0 LUB QTY TYP CMNTS 0 2 havi Am a FIELD NAME AS OF DATE TIME DATA ENTRY POINT NAME LOCATION SECONDS LOCATION UTM 10 LOCATION MINUTES UNIT LOCATION NAME LOCATION UTM 100 DATA ENTRY FUEL QUANTITY AND TYPE OIL QUANTITY AND TYPE LUBRICANT QUANTITY AND TYPE JKCLTHRE COMMENTS DOWNGRADING AND DECLASSIFICATION MARKINGS START COL J IBL 331 48L PAGE 2 OF 2 DFI NO TYPE NO 6 N C 914 2 N E 082 1 26 ANBS E 468 15 AN C 011 13 AN C 01 ll AN 469 20 ANBS E 500 11 AN C 542 2 N E 082 5 11 AN C 4007 9 14 ANS C 4032 9 14 ANS C 4033 15 ANBS E 150 l 25 ANBS E 679 DUI NO 001 004 043 005 011 043 012 001 01 A01 A01 A01 001 y86t 00 005 6 532 MESSAGE NUMBER MESSAGE MAP m we A um e QA S026 TITLE POL LOCATIONS POLLOC 195 123456789012345678901234567890123456789012345678901234567890123456789 DTGM NNNNNN 1 3KPOLLOC DE LOCATION NN XXXXXXXXXXXXXXKXXXXXXXXXXX XXXXXXXX
122. NULL else if BlockLen An end of transmission was received WriteLog GetFile EOT received but not expected WriteLog GetFile FileName not saved Remove FileName MSGPROCQ Get rid of it return INTERRUPTED Indicate we were interrupted else if BlockLen CAN The remote system shut down suddenly WriteLog GetFile CAN received remote aborted WriteLog GetFile FileName not saved Remove FileName MSGPROCQ return ABORTED else Process errors WriteLog Receiver timed out FAILED Remove FileName MSGPROCQ Throw away incomplete file return ERR EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt GETPAC C TIME 1987 02 12 1617 18 0 include net h include iocontrol h include iocontrol e define ReadBurst a b read ModemFd a b xk GetPacket retrieve a packet control information or data from the remote system allocating storage for it and return a pointer to the caller who will release storage when done unsigned char GetPacket length int length Return parameter is length of packet in bytes unsigned char TempPacket MAXPACKET Allocate static storage unsigned char Ptr Pointer for returned storage int CurMax Current maximum index of packet int Result Result from ReadBurst length of data if positive int RetryCount
123. O while there are still data values to print form c Oct 30 10 51 1986 Page 19 if 15 last line view win touchwin view box win wrefresh view box win getyx command win LINE COL wclear msg win wprintw msg win Press SPACE Bar for More wrefresh msg win wgetchar msg win we lear view win wprintw view win wrefresh view win wclear msg win wrefresh msg win wmove command win LINE COL wrefresh command win else wprintw view win Nn begin new line with slash fprintf WP imgf Nn begin new line with slash i 23 fptr head print one line of data tabbing to column fields for k 0 fptr k indent appropriately and print data n atoin fptr gt colpos strlen fptr gt colpos 1 LR strlen fptr colpos Switch fptr colpos LR 1 tab to Next field i case L s for i n i waddch view_win fprintf case m ntstrlen fptr gt colhdr strlen dptr k gt csdata for i lt m 14 waddch view_win fprintf WP imgf wo break wprintw view_win s dptr k csdata fprintf imgf Xs dptr k csdata i i strlen dptr k csdata 1 dptr k dptr k Next fptr fptr gt Next free dptr form c Oct 30 10 51 1986 Page 20 2 Convert them into standard output format Get the field level data
124. Oct 30 10 50 1986 Page 21 register int Gap i j filename Temp for Gap Num 2 Gap gt 0 Gap 2 for i Gap i lt Num i for i j gt 0 Gap if strcmp Entries j Entries j Gap lt 0 break strepy Temp Entries j strcpy Entries j Entries j Gap strepy Entries j Gap Temp givetomp c Oct 30 10 50 1986 Page 22 include net h extern int ForwardFlag Flad indicating forwarding is enabled int GiveToMP SysName char SysName i Move all messages that are not courtesy copies over to the msgproc queue We have to look out for case where nothing remains in the queue except CC messages DeQueue will keep giving us the names of the CC files forever if we don t detect this state and exit the loop We do this by saving the name of the first CC encountered and checking it against later CC files When it is see for the second time we will have sent all the messages to be rerouted except for the remaining CC files which we must leave in the queue char MessageFi pathname NewPath pathname OldPath pathname SaveName register int Count 0 register int Done FALSE char Number 10 if ForwardF lag Don t do forwarding if disabled return GOOD strepy SaveName set strlen SaveName to 0 while MessageFile DeQueue SysName NULL amp amp Done if Mess
125. PKTOVERHEAD WriteLog SendPacket memory violation building packet exit INTERNALERROR Packet Ptrt t DLE Place Data link Escape before end text marker Packet Ptr end ETX ETB End of text or text block Code CheckSum Packet 3 Ptr 4 i e checksum on data amp ETX sprintf Packet Ptr 7 77 Now that the packe to low level 1 0 ifdef DEBUG fprintf tmp 88888 in for i O0 i lt Ptr 4 i 111 fprintf tmp YVn in fclose tmp fendif Send Packet Ptr 4 n characters free Packet Free storage EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt WAITAC C TIME 1987 02 12 1727 15 4 finclude net h finclude iocontrol h finclude iocontrol e wait for an acknowledgement signal from remote system and return error status if NAK received or if timeout occurs int WaitAck EOF unsigned char ResponsePacket From getpacket allocated therein int ResultStatus Status to pass to caller int PacketLength Needed for call to getpacket unused if ResponsePacket GetPacket amp PacketLength NULL ResultStatus ERR Timeout before packet was received else if ResponsePacket ACK ResultStatus int NULL else if ResponsePacket EOT WriteLog WaitAck remote system weas preempted connection terminated
126. PORTTABLE PSFree PortList return ERR UnLock PORTTABLE PSFree PortList return GOOD ports c Oct 30 10 50 1986 Page 30 int PutPorts PortList portlist PortList Writes the contenets of PortList over the current PORTTABLE Assumes the PORTTABLE is LOCKED FILE PortTableFd register int i if PortTableFd fopen PORTTABLE w NULL WriteLog PutPorts can t open PORTTABLE for update return ERR for i20 PortList i NULL fprintf PortTableFd 5 c n FIELDMARK PortList i gt Port PortList i Site PortList i gt State fclose PortTableFd return GOOD portlist GetPorts Reads the PORTTABLE and builds an structure of port entries Uses malloc to get storage for the struct Returns a pointer to the struct in PortList Returns NULL if there is an error pointer to list if all is well End of array is marked by PortList n NULL Assumes PORTTABLE is LOCKED amp fdefine MASK OxOOff portlist PortList FILE PortTableFd char TempBuf L INELEN 1 sitename Site pathname Port int State 0 register int i c NumPorts char Added SLG ports c Oct 30 10 50 1986 Page 31 if PortTableFd fopen PORTTABLE r NULL WriteLog GetPorts Can t open PORTTABLE 59 return NULL indicate failure count the ports so we can malloc for PortList for NumPorts 0
127. QUALIFIER l 3N 457 017 REF 0 R M SERIAL LETTER 1A 6636 02 2 MESSAGE TYPE 1 20 ANBS E 050 001 COMMUNICATION TYPE E646 001 M 3 ORIGINATOR l 20 ANBS E 146 001 M 4 DATE OF REFERENCE YEAR MONTH OAY GN C075 010 DAY TINE OF REFERENCE 7 AN C 143 005 DATE TIME GROUP 13 ANB C647 001 DATE OF REFERENCE DAY MONTH YEAR 6N C 648 002 DATE OF REFERENCE DAY ALPHAMONTH YEAR 7 AN C 649 002 0 5 MESSAGE SERIAL NUMBER 7N 147 005 REPORT SERTAL 4 5 ANS 147 006 0 6 SPECIAL KOTATION 1042 001 OR 7 NASIS CODE 332 001 AMPN C NARR C 9861 INNF 00 00S V 322V MESSAGE NUMBER TITLE 81 7 MESSAGE 5006 CASUALTY INFORMATION REPORT CASSTATS 12345678901 2345678901234 5678901 23456789012345678901 2345678901 23456789 EXER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1 XXXXXXXXXXXXXXXA 2 OPER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX e J XXXXXXXXXXXXXKXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX 3 4 MSGIO CASSTATS XXXXXXXXXXXXXXXXXXXX WNNHNNN AAA AAA NNN 2 3 4 5 6 NNNNNNN AXNXX REF A XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX NNNNNNABAAANH NNNNNHN 12 3 4 5 XXXXXXXXXXXXXXXXXXXX NNNHNNN NNNNNNHN AAA NHNNNNA AXNXX NNNNNNABAAANN NNNNNN NNAAANN AAAAA AAA 6 7 AMPH NARR PAGE 1 OF 2 7861 JINAC 00 00S V 322V MESSAGE LITBE Ode NUMRER 5006 CASUALTY INFORMATION REPORT CASSTATS SCT IDENT KDTGRPTN
128. Return the name of the file in FileName Open the file and return a file descriptor The file name will be composed of the system name plus a date time stamp FILE NewFile FileName Queue char FileName pointer to new file name int Type character to indicate message type char Queue directory in which to put the file pathname PathName pointer to the full path name of the file long int AbsTime AbsTime NOW sprintf FileName ZcisZxZ 4x Type MyName int AbsTime amp long 0x0f0000 gt gt 16 int AbsTime amp long 0 00 sleep 1 Ensure that clock increments sprintf PathName Zs ZTEMP Zs Queue FileName return fopen PathName w EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt OPENMO C TIME 1987 02 12 1641 41 7 finclude net h extern int ModemFd int OpenModem PortName char PortName Open the named port for use by IOControl Line parameters cannot be set by this program since the Honeywell C compiler does not have support for the IOCTL call in Unix Sets global variable ModemFd to the file descriptor for the modem ERR otherwise Y register int OFlag O RDWR if ModemFd open PortName OFlag ERR WriteLog OpenModem Can t open PortName return ERR return ModemFd EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt PORTS C TIME 1987 02 12 1642 08 4 fin
129. Returns NULL if there is an error pointer to list if all is well End of array is marked by PortList n NULL Assumes PORTTABLE is LOCKED define MASK 0 00 portlist PortList FILE PortTableFd char TempBuf LINELEN 1 sitename Site pathname Port int Statez0 register int i c NumPorts char x Added SLG if ponere fopen PORTTABLE r NULL WriteLog GetPorts Can t open PORTTABLE return NULL indicate failure count the ports so we can malloc for PortList NumPorts 0 while cegetc PortTableFd 7 7 if ferror PortTableFd break NumPorts SkipEOL PortTableFd PortList portlist malloc NumPorts 1 sizeof portentry fclose PortTableFd PortTableFd fopen PORTTABLE r gt rewind PortTableFd for i20 c getc PortTableFd EOF amp amp i lt NumPorts i PortList i portentry malloc sizeof portentry fscanf PortTableFd Zs Zs Zc Port Site amp x PortList il Port malloc strlen Port 1 strcpy PortList i gt Port Port PortList il Site malloc strien Site l strcpy PortList i gt Site Site State int x State amp MASK Bill this does not work on ONYX PortList i gt State State SkipEOL PortTableFd goto next entry PortList i NULL set end of list marker int fclose PortTableFd return PortList
130. SLAVE connection established RemoteName TouchSite RemoteName note that site called in OK sprintf QueueName s s MASTERQ RemoteName if Lock QueueName ERR Try to lock current queue i WriteLog lOControl cannot lock QueueName goodbyel exit FATAL mode RECEIVEMODE Enter receive mode break case SENDMODE Send mode Check to see if line needed by higher priority task or if we re simply finished Hang up if so if memory Preemption QueueName mode HANGUP ifdef FORHONEY sleep 3 fendi f SendByte EOT Send signal to remote break iocontrol c Oct 30 10 51 1986 Page 21 NextName DeQueue QueueName Read sysX queue if NextName NULL i sprintf NextPath s s QueueName NextName if SendFile NextPath NextName ERR Send it Remove NextName QueueName Delete file if FirstTime TouchSite QueueName Site must be up FirstTime FALSE else Something went wrong during transmission WriteLog lOControl QueueName FAILED 9 Exit LOSTCONTACT Hang up and all that else ifdef FORHONEY sleep 3 endif SendByte EOT Send an end of transmission memory TRUE Remember that we sent EOT mode RECEIVEMODE Enter receive mode break case RECEIVEMODE Receive mode Result GetFile Get ne
131. System Overview 999 amp h hoh state 3 0 Design Issues tav 3 1 High Level Issues E js 3 1 1 3 1 2 3 1 3 3 1 4 Wetwork Topology usse tx dixe em mb osa EVE du Routing Ta NES i Failure Management TUS rr C Backup and Recovery dioses cd cr Tr m 3 2 Middle Level Issues ee ee Eee a EET re Lead 3 2 1 3 2 2 3 2 3 3 2 4 3 2 9 Component Interfaces TTE E ET Connection Management nuc e Database Operations 5 Message Generation T ERRARE Message Processing 3 3 Low Level Issues EUR E diaper ui te 3 3 1 3 3 2 3 3 3 3 3 4 Queue Management mim
132. TTYSet c oflag amp OPOST Don t post process output TTYSet c cc VMIN 1 MIN 1 char buffering TTYSet c cc VTIME 0 Expect data after O ms if ModemFd TCSETA amp TTYSet ERR set new modem attributes i WriteLog SetPort Can t set new modem attributes PortName Un return ERR return ModemFd touchsite c Oct 30 10 51 1986 Page 4 include net h extern int DebugLevel int TouchSite SysName char SysName name of the system to update reset site table entry to indicate successful contact site Site allocated by ValidSite if Site ValidSite SysName NULL Site is valid Site gt Status UP declare site up Site TimeToCall NOW reset time to call Site gt NumCalls 0 reset retry count PutSite Site save entry else ValidSite returned NULL if DebugLevel WriteLog TouchSite No active entry for SysName in SITETABLE waitack c Oct 30 10 51 1986 Page 42 include net h include iocontrol h include iocontrol e WaltAck wait for an acknowledgement signal from remote system and return error status if received if timeout occurs int WaitAck unsigned char ResponsePacket From getpacket allocated therein int ResultStatus Status to pass to caller int PacketLength Needed for call to getp
133. The save command is used to tell the system to save the message contents in a named file The format of the command is save file name gt where lt file name gt is the UNIX path name to be given to the saved file The lt file name gt must be supplied by the user All contents of the message file following the header and the command line will be copied into the named file The recover command is used to invoke a database recovery operation The command as the form recover lt site gt MM DD YY hh mm ss where lt site gt is the TACCNET site for which the recovery is performed It is followed by a date and time in the standard format shown above Upon receiv ing a recover command the system searches the message archives for all messages sent to the named site after the given date These messages are linked into the site queue to be retransmitted All network administrative messages must be addressed to site net adm where site is the name of the TACCNET node to be accessed These messages are not really user mail messages The net adm userid is an alias for the Message 46 TACCNET Technical Specification November 14 1986 Processor When a network administrative message is found in the input queue MSPPROC reads it and performs the desired function A record of the originator and the action taken is kept in the Message Processor log file 4 2 4 Database Operations The main purpose of the TACCNET system is to transmit
134. The system designer must decide how many backup sites to allow or provide and how to insure that they are kept current Another issue is fre quency of backups how often do we take snapshot of the data for backup When the failure occurs and recovery is desired how will it be initiated message may be sent to one of the backup sites to request an upload of the last database backup It will be important to know and validate the time of that backup It will probably be desirable to request retransmission of any messages sent to the destroyed node after the date of the last backup The method for requesting these retransmissions must not flood the network with redundant messages but must make sure that all relevant information is obtained It may be possible to avoid retransmission of old messages by restoring a snapshot 10 TACCNET G36 633 Final Technical Report April 28 1987 backup and updating it from a higher level node 3 5 Node Emulation The TACCNET prototype system provides the capability to run more than one copy of the system on asingle physical machine This allows a node to perform the functions of a down or departed node in addition to its own work Other nodes in the network do not need to know that the down node is being emu lated All that is required to set up an emulated node is to create a root directory for TACCNET to use to handle the emulated node s work disseminate the new phone number for the emulated no
135. am the child IOCONTROL does the transmitting and receiving sprintf IOControl Zs Zs BIN IOCONTROL if DebugLevel execl IOControl IOControl SysName PortName argv 3 char 0 Pass debug info else execl IOControl IOControl SysName PortName char 0 WriteLog Caller cannot exec IOControl Goodbye 3 exit ERR wait amp Status wait for IOCONTROL to complete switch Status amp Oxff00 gt gt 8 case GOOD if DebugLevel WriteLog 11 Conversation with SysName complete break case INTERRUPTED if DebugLevel WriteLog Caller Interrupted during conversation with SysName IntFlag TRUE Set interrupt flag for later Construct interrupt file name to remove sprintf IntFileName Zs Zs SysName INTFILE break case ERR default WriteLog Caller IOCONTROL returned error if CheckDown Site record unsuccessful call GiveToMP SysName may need to forward mail quit ERR reset site table entry to indicate successful contact Site gt Status UP Site gt TimeToCall NOW Site gt NumCalls 0 PutSite Site quit GOOD else WriteLog Caller if Connected FALSE if CheckDown Site GiveToMP SysName else Connected ERR declare site up reset time to call reset retry count save entry amp release storage
136. and operation of these programs is explained It will be difficult for persons not familiar with the C programming language to use this docu ment It will also be helpful to be familiar with the UNIX and GCOS operating systems under which TACCNET was developed The definitive reference for the C language is The C Program ming Language by Brian Kernighan and Dennis Ritchie Prentice Hall 1978 There are numerous introductory books on the C language and the UNIX1 operating system available f In the C programming language subprograms are called functions A program must consist of at least one function but may call many other functions Functions may call other functions and may even call them selves recursively f UNIX is a trademark of AT amp T Bell Laboratories GCOS Job Files for Compilation and Linking This section contains the listings of the GCOS command files used to compile and link the TACCNET programs GENMSG CALLER and IOCONTROL PATH TIME M4_CC M4 CC CC M4 CC CC CC CC CC CC M4 CC CC CC 4 CC M4 CC CC M4 CC CC M4 CC CC CC M4 CC CC M4 CC CC CC 4 CC CC 4 CC CC CC M4 CC M4 CC M4 CC CC EOF IOCONT C ZSYS72 gt UDD gt GOLDBERG gt UNIX gt COMP1 EC 1987 02 12 1732 42 6 D D D D PROTOCOL DBG PROTOCOL DBG PROTOCOL PROTOCOL DBG PROTOCOL DB
137. are numerous introductory books on the C language and the UNIX operating system available t UNIX is a trademark of AT amp T Bell Laboratories i In the C programming language subprograms are called functions A program must consist of at least one function but may call many other functions Functions may call other functions and may even call them selves recursively Shell Command Files This section contains the listings of the shell command files used to start stop and control the TACCNET system These command files contain small programs written in the Bourne Shell command language The Bourne Shell is standard on all UNIX systems and licensed derivatives It is described in the UNIX operating system command reference under the title sh Files Files Files Files Files Files Files Files Files Files Files Files Files Files Files Files Files Files Files Files Table of Contents abort cleanup dport dsite jtgen j tmake jtsend log msg qstat shell cpr shutdown startserve startsys stopserve stopsys taccnet tback tload unlock Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Thu Oct 30 10 52 36 1986 abort Oct 30 10 52 1986 Abort stop TACCNET communications queueing and db server systems stopsys stopserve exit O Page 1 cleanup Oct 30 10 52 1986 MASTERQxzS MASTERQ usr taccnet export MASTER
138. assignment MASTERQ fol lowed by the command MASTERQ placed in the file profile of the user s home directory 9 Edit the file tables myname and replace the text there with the name of the node being installed The system uses this as its node name during conversations with other systems Do the same with the file bin unitid as it is used by the server during automatic message gen eration 10 Edit the file tables ports to reflect the ports that have been set aside for dialout by the system The structure of this file is explained in the section Maintenance below There should be at least one port reserved for dialing out Each dalout line must be connected to a Hayes Smartmodem It is unimportant which type of modem is used for dtaltn 11 If necessary make changes to the files tables sites and tables paths according to the instructions in Maintenance below in order to describe the connections to other nodes in the network 12 Make sure that there is at least one port connected to the system and that it is en abled for logins on a permanent basis It is unimportant which type of modem is used for dta 13 Install UNIFY Relational Database Management System according to the installation documentation for that system and modify the database stored in bin unify db if desired to contain any current data for this site 60
139. c sethayes o net h sethayes c cc c 0 sethayes c login o net h login c cc 0 login c getprompt o net h iocontrol h getprompt c c 0 getprompt c endswith o net h endswith c cc c 0 endswith c errmsg o retcodes h errmsg c cc c 0 errmsg c params e Oct 30 10 50 1986 Page 2 extern int MaxCalls extern int RetryDelay extern int DownDelay caller c Qet 30 10 50 1986 Page 3 include wait h include net h include retcodes h lt signal h gt define MODEMTIMEOUT 12 int ModemFd OpenModem will return a file descriptor for the modem site Site allocated by ValidSite pathname Logfile global LogFile for use WriteLog sitename SysName name of the system to be called pathname PortName name of the port to use pathname IntFileName Name of interrupt file to remove int IntFlag FALSE Flag indicating if interrupt occurred int DebugLevel 0 Runtime debug level 0 normal int MaxCalls 2 Maximum retry calls to a site before determined down int RetryDelay 60 Minimum retry time in seconds between calls to site int DownDelay 180 Minimum delay in seconds before retry of downed site int MaxWait 10 Maximum retry for hangup response int TimeQut 10 Timeout in seconds for reading a single character int HoneyTime 30 Timeout for Honeywell versions int ForwardFlag TRUE Set de
140. char argv pathname Server Queue pathname NewName OldName char NextMsgName Next message in system input queue Page 25 int Forever FALSE if the argument is given loop forever FILE MsgFi leFd int oc 1 int Found char SetID 10 char MsglD 6 20 char tempbuf 80 char imt 80 char ReturnPath 80 char Priority 2 pathname SiteName FILE ParamFileFp char Key 20 int Value int PollDelay 30 Number of seconds to sleep between scans void ShutDown umask UMASK validate and parse arguments if arge 3 arge gt 4 usage argv 01 strcpy ServerQueue argv 1 get working directory strcpy SiteName argv 2 set input queue if arge 4 amp amp argv 3 0 Forever TRUE continuous operation set working directory if chdir ServerQueue 0 fprintf stderr invalid directory n usage argv 0 unlink abort Make sure abort file gets blown away sprintf Logfile log s log SERVER set the global Logfile if Lock SERVER ERR i WriteLog Server can t lock ServerQueue Goodbye exit ERR server c Oct 30 10 52 1986 Page signal SIGTERM ShutDown Point to shutdown routine on signal 15 if Forever WriteLog Server Scanner mode ServerQueue SiteName if ParamFileFp fopen PARAMFILE r
141. char Dir Name of directory to read char star name Honeywell directory function char DirEntry Pointer to directory entries char DirPtr register int Num 0 int 1 char Entries Returned vector containing directory entries Entries char malloc NFILES sizeof char if Entries char NULL WriteLog ReadDir cannot create storage for queue return char NULL Call Honeywell specific routine to get directory listing DirEntry star name Dir Match all file names for now DirPtr DirEntry if DirEntry char NULL i WriteLog ReadDir cannot read directory Dir free Entries return char NULL while DirEntry 7107 if DirEntry O 1 727 Entries Num malloc strlen DirEntry 1 strcpy Entries Num DirEntry DirEntry strlen DirEntry 1 Bump pointer past name free DirPtr if Num gt 0 Sort Entries Num Entries Num NULL Set the last one to NULL return Entries else lt free Entries return char NULL Sort Entries Num filename Entries int Num register int Gap i j filename Temp for Gap Num 2 Gap gt 0 Gap 2 for i Gap i lt Num i for i Gap j gt 0 j Gap if stremp Entries j Entries j Gap lt 0 b
142. command to the Cermetek modem char HangUpCmd 5 FlushModemInput ModemFd if SysType GCOS sleep 5 Ensure that the receiver has ended write ModemFd BYE r strlen BYE r Transmit logout rqst sleep 4 FlushModemInput ModemFd sleep 1 sprintf HangUpCmd ZcE r 710167 Ctrl N E hangs up write ModemFd HangUpCmd strlen HangUpCmd write ModemFd n 1 if DebugLevel WriteLog HangUp hung up the phone ok return TRUE hung up the phone OK PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt LOGIN C TIME 1987 02 12 1628 23 6 include net h include iocontrol h extern int ModemFd extern int DebugLevel int Login Name Password SysType PortName char Name char Password char SysType char PortName char System 2 char Command 40 char PromptStr prompt string from remote site allocated by GetPrompt int Count 0 int LoggedIn FALSE char Garbage 101 if DebugLevel WriteLog Login Connected about to log in as Name switch SysType or ub E case GCOS must load IOControl by hand if DebugLevel WriteLog Login system is CGOS write ModemFd CR 1 refresh login prompt sleep 6 FlushModemInput ModemFd sprintf Command Zs Zs r GCOSLOGIN Name write ModemFd Command strlen Command sleep 4 Wait for Password prompt sprintf Com
143. considered 3 3 1 1 Directory Access Secondary storage must be partitionable into directories or collections of files and a naming convention must exist for referencing these directories and their contents Directories are essential to the technique of separating messages into queues for specific systems or processes In every UNIX environment as with many other operating systems each level of a tree structured directory can be treated as a standard data file This per mits application programs to query the contents of a directory rapidly and easily as long as the structure of a directory entry is defined Though this methodology is not absolutely necessary for accessing the names of files within a directory it is a practicable and consistent technique for doing so Since directories can represent queues in the CSSCS environment and their files can represent JINTACCS and administrative messages this structure seems well suited to the purpose of organizing information for the CSSCS Another advantage of this organization is that files can be created and removed in an atomic operation That is the function of deallocating or renaming a file is no more than removing or changing the entry for that file from the direc tory Most file systems which are organized in this way support the concept of linking in which data is a single object which can be addressed by several TACCNET Technical Specification November 14 1986
144. coordinate struct Isnode str Next fchi ld struct csnode_str char char char char char char char int int struct Isti_str fdcat 2 fdname 1 colhdr 25 colpos 4 12943 11 dtype 5 dmin struct csnode_str struct csdata str fchild struct csdata str char csdata 25 struct csnode str struct csdata str Ps Left right justification Combination of A B and 5 Lower bound for the data value parent Prev Upper bound for the data value Nexts parent Prev Next Page l jms h Oct 30 10 51 1986 struct tsnode_str char tstext struct 1511 str parent typedef struct IstO_str 11510 typedef struct 1511 str 11511 typedef struct lsnode str typedef struct csnode str typedef struct csdata str typedef struct tsnode str C library functions char malloc int strcmp int strlen char strcpy char strncpy char strcat user defined functions int atoin char upchar char upstr char bl sup char bl pad char bl pad front char readstr int addscr csf int addscr csline int convert int convIslist int convcsflist int convcsdlist int convtsnode int readtxt int SET handler int FIELD handler int
145. database of network nodes and addresses New nodes or nodes returning to action could call in to the post office to register and pick up waiting mail The post office site could then distribute the new node s address to the rest of the network A side effect of the store and forward capability is the ability to route a message through a chain of intermediate sites to a final destination Message paths would be composed of a sequence of node names This could be used to broadcast messages of general importance to related groups of nodes or to use a specific set of links so as to avoid down or unreliable links Ordinarily the user would supply only the final destination node name and the system would choose the shortest available path to that system probably a direct connection via dialup The user would however have the ability to override the system choice and specify a particular path Aliases could be maintained by the system for complex or lengthy paths allowing the user to send a message to a desig nated group of nodes without remembering all of the nodes and their order or connectivity The TACCNET prototype provides store and forward message passing automated path selection with optional user override and path aliasing It does not provide the post office method of dealing with undeliverable messages but does provide mail holding for departed or inactive sites 3 2 1 Message Forwarding We have already discussed alternate sites and m
146. delivered when the node returns to service Also the system will monitor down nodes and call them at regular intervals to attempt to regain contact Nodes may leave the system in a more controlled manner by notifying other nodes of their departure In that case mail for the departed nodes will be held until they return to service Nodes can add change delete and query information in the site tables of other nodes without operator intervention 4 9 File transfer The basic function of the system is file transfer between machines The system transfers JINTA CCS messages in text files and can also be used to transfer any 1 TACCNET G36 633 Final Technical Report April 28 1987 other text data or programs files between machines Files are transferred through the system by the store and forward method paths through the system and multiple recipient transfers are possible 4 10 Electronic mail The TACCNET system has a gateway into the UNIX electronic mail system It can therefore be used to send mail to users or processes at other sites in the network The use of TACCNET is transparent to the user 4 11 Priority message scheduling The TACCNET system is designed to allow different classes of service for mes sages of different priorities For demonstration purposes messages were assumed to belong to one of two classes priority messages requiring fastest possible delivery or routine messages to be delivered
147. destination exit fi build 5 2 dev null log Oct 30 10 52 1986 MASTERQ MASTERQ usr taccnet cd SMASTERQ log tail f 1 log Page 8 msg Oct 30 10 52 1986 Page 9 MASTERQ S MASTERQ usr taccnet export MASTERQ cd SMASTERQ bin genmsg 5 lt 50 gt 51 qstat Oct 30 10 52 1986 MASTERQsS MASTERQ usr taccnet cd SMASTERO for i in cat tables queuelist do echo i aF Si done Page 10 shell cpr Dec 30 13 24 1986 Page 11 5 0 5 MASTERQ usr taccnet ABORTF I LE abort export MASTERQ Stop the TACCNET system by placing the abort file abort in the top level queue of the system to be shut down The file will be removed the next time the system is activated cd SMASTERQ echo Shutdown signalling TACCNET system shutdown touch SABORTFILE startserve Oct 30 10 52 1986 Page 12 if 1 then MASTERQ S MASTERQ usr taccnet cd MASTERQ bin PATHSSPATH MASTERQ bin export MASTERQ PATH echo starting server in SMASTERQ start the server and record the pid for stopsys nohup server SMASTERQ bin SMASTERQ 1 2 nohup out amp echo gt SMASTERQ bin spids else echo usage startserve sitename exit 1 fi startsys Oct 30 10 52 1986 Page 5 MASTERQ usr taccnet export MASTERQ echo starting message system in SMASTERQ cd SMASTERQ bin PATH SPATH SMASTERQ bin start the message proces
148. dialout ports and the status of each This file described in detail in the TACCNET Installation and Operation sec tion of this document contains entries for each dialout port available to the TACCNET system Each entry contains the port name the system for which a caller has been invoked on that port and the state of the connection currently being made on that port If the port is free the system name is set to free and the connection state is set to available When the gms schedules a call to a remote site it examines the Port Table to see if a caller has already been invoked for that site If so there is no need to call and the qms will continue scanning its queues The qms also checks for lockfiles on the system queues which would indicate that a conversation with the desired site is already in progress having been originated by the remote site If the remote site is not currently in communication with this system the qms will examine the Port Table to see if any ports are available for a caller to call that system If there is at least one available port the qms immediately modifies the Port Table to reflect the name of the site about to be called set ting the connection state to a key corresponding to the highest priority of the messages to be transmitted to the site T The port is released when the caller ter minates the connection for any reason If there are only routine messages to be se
149. does not provide mechanisms such as file or record locking It is possible to implement file locking using the file creation commands A process wishing to access a critical file or resource must first attempt to create a special lockfile If the lockfile already exists meaning that some other process is using the resource the create operation fails The process can then exit or it could keep trying to create the lockfile sleeping briefly in between attempts to give the other process an opportunity to finish with and release the resource A threshold must be defined to limit the number of failed attempts and prevent infinite wait loops When the create operation succeeds we are confident that no other process is accessing the file Of course the success of this method depends on the cooperation of all processes using the resource Rogue processes which access the resource without regard to the lockfile can cause unpredictable results There is also the potential for deadlock since processes are their honor to release the resource when they are through These methods are standard for UNIX pro grammers but may be avoided if the development operating system provides true file or record locking capabilities The TACCNET prototype uses the above method for illustrative purposes and to guarantee portability across the UNIX family 3 2 1 4 Preemption We have already discussed preemption of resources for priority message han dling Since
150. dsp c Oct 30 10 51 1986 Page 9 loop through the field nodes gathering data till user says quit for 0 k lt j amp amp fptr k i we lear msg win wrefresh msg _ win if EQUALS fptr gt j L n atoin fptr colpos strlen fptr colpos 1 wmove main win y n else i n atoin fptr gt colpos strien fptr gt colpos 1 strien fptr colhdr fptr dmax wmove main win y n wrefresh main win wget field main win str fptr dtype fptr dmin fptr dmax C fptr fdcat while EQUALS 61 sup str 66 EQUALS bI sup ptri setcat amp amp FIRST wclear msg win mvwaddstr msg 0 0 set is MANDATORY mvwaddstr msg win 1 0 Reenter waddstr msg win fptr fdname wrefresh msg win wmove main win y n wrefresh main win wget field main win str fptr dtype fptr dmin fptr dmax C fptr fdcat FIRST FALSE i f EQUALS b1 sup str strcpy str if 0 amp amp EQUALS str break while k 0 amp amp EQUALS 61 sup str we lear msg_win mvwaddstr msg_ win 0 0 The set is MANDATORY mvwaddstr msg win 1 0 Reenter waddstr msg_win fptr gt fdname wrefresh msg_win wmove main_win y n wrefresh main_win wget field main win str fptr dtype fptr dmin fptr dmax C fptr fdcat node k csdnode malloc sizeof csdnode data sp
151. ete passwd entry is the following cosmos 113 100 usr taccnet usr taccnet bin iocontrol 5 Duplicate the entry in etc passwd just added adding the suffix h to the login name Change the startup shell for this login to be the special Honeywell interface bin iocontrolh The new entry should look something like the following cosmos h 113 100 usr taccnet usr taccnet bin iocontrolh 6 Change the password for both of these logins to be the name of the node For example node cosmos would have logins cosmos and cosmes h each with a password of cosmos Some UNIX systems will not permit short passwords If the password is rejected because it is too short type it several times until it is accepted If it is never accepted choose a valid password and inform all other nodes of the new password 7 Create an administration account for use in editing configuration files and for starting and stopping the TACCNET system which has a group number the same as that of the taccnet group You may create several such accounts if required Use this new account to complete the remaining steps 8 Define the environment variable MASTERQ to be the full pathname of the TACCNET root directory you have chosen Insert this definition in the shell initialization file for all accounts created in Step 7 For use the command setenv MASTERQ and place it in the the file eshre of the user s home directory For sh use the
152. files This allows us to avoid the problems of queueing and organizing messages leaving all that to the operating system This is particularly convenient in a UNIX system where directories of files can be opened and read as files them selves With a minimum of programming we are able to treat the directories of files as first in first out queues of messages Files can be added deleted and moved using the UNIX function library commands link and unlink Race conditions in the creation and copying of files are possible where continuously active processes scan the queues for input The system must not be allowed to 14 TACCNET Technical Specification November 14 1986 begin processing a message file before it is completely written This problem is avoided by using temporary hidden files which do not show up in normal directory scans These files are created filled with text and then made visible to the system for processing They have been enqueued In a system which provides better file protection it may be possible to rely on the operating system for the enqueueing and manipulation of files 3 2 1 3 File Locking Since the system must keep tables of information on sites ports and other resources and since these tables are being read and updated by multiple processes executing concurrently there must be some protection against conflicting reads and updates The UNIX operating system in its normal imple mentation
153. for GCOS Communications Packet Formats Data Packets 12 bytes for frame text block is variable length tunable parameter o Control Packets Always 4 bytes Data packet format packet number STX 4 text checksum DLE CR Control packet format control code DLE EM _ Message Processing msqproc o All messages pass through msgproc O Processing is based on message type o Routing is based on message header build build msgprocq iocontrol qms Message Processing msqproc o Message file name indicates type Format TsysnameXXXXX Where T message type sysname originating node XXXXX hex timestamp o Valid message types A Administrative P Priority message C Courtesy copy R Routine message Undeliverable S Invalid path H Bad header U User mail M New message Rejected message Message Processing MSQProc o Routing based on message header priority c flag gt source path gt destination path Path format site site site user Where site is a valid node ID user is either net adm server or a valid user on the node o Message may have multiple headers first is current Database Design Message Dictionary Hierarchical system may be preferred JINTACCS message defined in hierarchical fashion Message database is primarily used as static message dict
154. gt Status UP RETRY or DOWN site Site i if Site gt Status UP if gt Site TimeToCall if DebugLevel WriteLog State retry time reached for Site gt SiteName my Site gt Status UP Si te TimeToCall 0 if DebugLevel gt 1 switch Site gt Status case UP WriteLog State Site SiteName is UP break case RETRY WriteLog State Site gt SiteName is break case DOWN WriteLog State Site gt SiteName 1 DOWN break default Writelog State Site SiteName status undefined return Site gt Status stripme c Oct 30 10 50 1986 Page include net h char StripMe Path FirstSi te char Path FirstSi te Removes the first site name from Path and returns a pointer to the rest of the path If there is only site name left in Path a NULL is returned Path is not altered and FirstSite points to the site name that has been stripped off the front of the path register int i 0 while Path i SEPCHAR amp amp Path i 0 FirstSite i Path i i FirstSite i O return Path i NO NULL Path i 1 validsite c Oct 30 10 50 1986 Page 40 include net h site ValidSite Site char Site Validates the existence of Site SITETABLE and returns as its value a pointer to a site table entry in a struct d
155. held to exchange information and present results In addition planning sessions were called as needed Plans Install the GCOS C compiler Obtain manuals and evaluate the compiler Port TACCNET to the Honeywell under GCOS Complete the design of the database backup and recovery system for TACCNET Develop a screen oriented editing interface for the JINTACCS message composition tool Install the TACCS and bring up UNIX Port TACCNET to the TACCS Personnel ALCON project administration William Putnam project management and design steven Goldberg system design and development AN ie raad research assistant There are two professional researchers involved with the project Bill Putnam works full time as project manager and chief software designer Alton P Jensen works one quarter time as project administrator There are two students working part time on this project They carry work loads ranging from 12 to 20 hours per week depen ding on availability The hours spent on the project are classified and allocated into five categories breakdown of labor for the period is given below Category Hours Administration 70 Planning amp Design 150 Prototyping amp Testing 160 Programming amp Debugging 60 Documentation amp Reporting 40 Total 480 Expenses Expenses for the period were solely the category of salari
156. if message rejected for being a repeat Return EOT if remote has no more files to send Calling routine will send corresponding ACK when all is done GetHeader messagename r messagename unsigned char ResponseBlock Block from getblock allocated therein int EndFlag End of text flag needed for getblock int BlockLength Length of block message name returned if ResponseBlock GetBlock amp BlockLength amp EndFlag NULL if poumon I EOT Unexpected condition no error handling here WriteLog GetHeader message header received improperly exit BADCONNECTION Synchronization bad between messages 3 else return EOT Remote had no more files to transmit if BlockLength gt FILENAMELEN Don t permit overindexing Remote message name is not of proper form WriteLog GetHeader message name is invalid free ResponseBlock exit BADCONNECTION Check message name against records not implemented now strncpy messagename ResponseBlock BlockLength set return text messagename BlockLength 7107 SendByte ACK no longer send ACK here send it in GETFIL FlushModemInput ModemFd free ResponseBlock release storage return int NULL Good result T di PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt PREEMP C TIME 1987 02 12 1647 53 7 include net h include
157. include sysdef h main ifdef ONYX exec v airmics bin iocontrolh v airmics bin iocontrolh 0 exec usr taccnet bin iocontrolh usr taccnet bin iocontrolh 0 include lt stdio h gt P movmem copy memory contents from one location to another Locations are passed in as string pointers indicating from and to addresses respectively Simply copy bytes one by one until all bytes copied Length is the third parameter movmem from to length unsigned char from Memory address to copy from unsigned char to Address to copy to int length Length in bytes to copy register int 1 0 while i lt length toli from i 1 preemption c Oct 30 10 51 1986 Page 26 include net h include iocontrol h Preemption return boolean value indicating whether or not the current queue has been interrupted so that a higher priority message can be sent to another system via the line in use Check for the file INTFILE in the given queue directory amp int Preemption queuename pathname queuename Name of directory to check for INTFILE file FILE fp Temporary file pointer to be released if successful pathname IntFileName Storage for complete file path sprintf IntFileName 5 5 queuename INTFILE Construct path if fp fopen IntFileName NU
158. insOnode MNO ALIAS i f EQUALS b1_sup FCAT M whi EQUALS bl sup DVAL 0 fprintf stderr Nn This field is MANDATORY fprintf stderr n Enter data gt ams c Oct 30 10 50 1986 Page 18 scanf A n DVAL DVAL 20 2 NO while VALID bl DVAL NOTYP fprintf stderr Nn The input is not valid fprintf stderr Nn The valid data type is NOTYP fprintf stderr n Reenter gt FNAME scanf DVAL DVAL 20 O i f EQUALS DVAL 0 strcpy DVAL a a strcpy COMBI FDESC strcat COMB strcat COMB DVAL ins 15 data COMBI else if EQUALS DVAL ins 1s data DVAL if IEQUALS DVAL amp amp EQUALS DVAL amp amp EQUALS DVAL pos FDNO 1 else if pos FDNO ptrpos taills THRU TRUE if EQUALS b1_sup DVAL if LEQUALS SCAT getout TRUE else fprintf stderr Nn This set is MANDATORY fprintf stderr Nn Enter data gt scanf A n c DVAL DVAL 20J O THRU FALSE end of while THRU break end of switch end of DF handler Type Handler for Construct freeform freef handler 0 char freetext ams c Oct 30 10 50 1986 Page 19 freetext char malloc MAXLINES 1 sizeof char readtxt freetext if DEAD del ptr 1 e
159. int argc char argv This is the main program for the communications system It moni tors the contents of the priority queue and the system queues scheduling Callers to service the messages in those queues It is invoked with the name of the directory to be used as the MASTERQ where all the other queues and directories are located The program will check the queues for waiting messages giving priority to those in the PRIORQ It will call Schedule to start a Caller process for each queue containing messages for transmission will continue to invoke Callers until all queues are serviced or there are no more available ports for the Caller to use f there are no available ports and a Priority message is waiting it will sieze a port from a Caller engaged in routine transmission Callers engaged in priority transmissions will not be interrupted If there is a Priority message for a site with which a Caller is currently engaged in a routine transmission the Priority messages will be inserted into the transmission as soon as possible The program may be run periodically by the cron process or it may be invoked with the option which will cause it to run continuously in the background t creates a lockfile on the master directory to prevent multiple copies of the program from executing If the file ever appears in the master directory the program will terminate and remove its associated lock file ch
160. is an administrative routine used to scan the message archive directory for any messages sent to Site after the given Date Site is a TACCNET site name Date is an ascii string in the form MM DD YY hh mm ss Any messages found by Recover will be linked into the system queue for Site so that they will be picked up by QMS and retransmitted int Recover MsgFileFd FILE MsgFileFd i long HashTime convert string date to long int long 1 FILE Fp char Date 40 struct stat StatBuf struct direct DirEntry sitename Site pathname QueuePath pathname FilePath pathname DestPath pathname DestSi te filename Entries long BackUpDate int DirFd int i 0 int Num Q int errcount 0 while getc MsgFileFd skip to start of parameter list if fscanf MsgFileFd 3s 4 n Site Date 2 i WriteLog Recover error in command line site Site date Date return ERR WriteLog Recover messages for Site since Date convert date string to integer if BackUpDate HashTime Date ERR WriteLog backup date format error Date return ERR if DirFd open ARCHIVEQ 0 RDONLY ERR open directory WriteLog unable to open ARCHIVEQ return ERR recover c Oct 30 10 52 1986 Page 36 if 1 DirFd 321 0 long ERR Skip and
161. it would not rely on the details of operating system port manipulations In choosing a technique for the prototype TACCNET system the development team ranked such factors as portability and ease of implementation above the number of ports that would be necessary The current TACCNET system util izes the distinct dialin vs dialout technique in which a UNIX getty is associated with each port Although a program could be written as part of the TACCNET software to monitor incoming calls using a getty allows dial port to be used for any system login and does not limit the port for strictly TACCNET use To permit access to the TACCNET system a special account can be created to run the tocontrol program in slave mode when a login is made to that account TACCNET Technical Specification November 14 1986 3 3 2 2 Port Usage Several problems arise when considering the control of access to input output ports by multiple processes Information must be maintained concerning the ports that are available their functions and their status The TACCNET proto type addresses most of these problems through the use of a Port Table and lock files For a given TACCNET configuration there will be a static number of ports available for dialout One of the main responsibilities of the qms is to orches trate the usage of these ports for calling remote systems when messages need to be transmitted The Port Table file contains a list of the existing
162. linear set if ptrl uval Ischild NULL dellslist ptr 1 uval Ischild break if ptrl prev NULL if ptrl1 next NULL i ptrO gt schild NULL else ptrl parent 5schild gt ptrl gt next gt prev NULL ptr ptrl gt next else i 1 gt gt ptrl next if ptrl next NULL ptrl next prev ptrl gt prev ptri prev free tptr 1 disp c Oct 30 10 50 1986 inelude ams h 1 Get the message data from the linked lists 2 Display it on screen int display 0 int 3 11511 if ptrO i printf n n ngs sNn ptrO mtagl ptrO mno printf s s n ptr0 gt mtag2 ptrO gt mid col 5 ptr ptr0O gt schi ld while ptr for 1 0 i col i putchar printf SET IDENT s n ptr gt setid switch ptr gt settyp case columnar set dsp col set ptr uval cschild dsp csdata ptr uval cschild break case F free text set gt dsp free set ptr uval tschild printf break case L linear set dsp lin set ptr gt uval Ischild break ptr ptr gt next col 5 1 Get the field level data from the linked lists 2 Display them on screen disp c Oct 30 10 50 1986 Page 30 dsp lin set ptr
163. link is dropped 4 2 2 3 2 Priority Messages In order to demonstrate the capability of handling messages of different priority levels requiring different classes of service the TACCNET prototype system has two priority levels Messages with a priority of 1 are regarded as high priority and are given fastest possible service possibly at the expense of delayed or preempted transmission of other messages Messages with a priority other than 1 are regarded as routine messages and are normally given first in first out service While there are only two priority levels in the proto type it is easy to generalize to the case of several priority levels requiring different types of service In the event that a high priority message appears in the queue to be sent to the secondary system the primary will send that message as soon as it finishes sending the current message If a priority message is destined for a different system and there are no more available lines the affected system will t The protocol contains some features specific to GCOS in order to deal with some limitations of that sys tem 40 TACCNET Technical Specification November 14 1986 immediately relinquish the line interrupting transmission of any routine mes Sage as soon as it recognizes the condition This is achieved by the appearance of a special file Interrupt in the current queue as soon as the priority mes sage is recogn
164. machine inter face that is suitable for the other facets of this project The following is a gen eral discussion of the system and the communications protocol driving it 4 2 2 3 1 Overview The ocon rol program manages communications between any two computers in the network as outlined in previous sections The tocontrol system is invoked for a queue corresponding to a particular node in the network and assumes a connection to that node It operates as an independent entity in that it only interfaces with the qms Queue Manager System as it is invoked by the qms or with the Message Processor as it places correctly received messages in the input queue for the Message Processor control operates in one of two modes when another system or when called by another system Such modes assign the calling system the role of primary and the called system the role of secondary The same program is loaded on both machines such that ini tially each program knows its respective role Once connected the two pro grams exchange synchronization and startup information After the two machines have established and validated their connection the primary system sends all files queued for the secondary system across the link When all files have been sent the two systems exchange roles and the secondary system sends all its queued files to the primary system This exchange continues until neither system has files to transmit and the
165. messages rather features are listed that differ from previous examples re 5006 Casualty Information Report The set KUNITCAS demonstrates the use field descriptors These descriptors are not required for machine iteroretation of the data since the data is position dependent however the descriptors do make the data human readable The sets KDTGRETN KUNITCAS and SKCASLTY are mardatory The set SKMOSCAS is canditicnal The condition that indicates whether the set is present is determined by the user and therefore the option must be given for the user to include the data or not sets SKCASLTY SKMOSCAS are columnar sets This means that the fields in the set are repeatable ever though the code does rot indicate them as sucn tne first line will be the column headings Subsequent lines will be the actual data as piven by the fields in the set The set SKCASLTY demonstrates a set where an arithmetic camouta tion must be mace ta comolete the set The field COUNT OF PERSONNEL is the total oT tne preceding four fields This same type of behavior is exhibited by sets SKMOSCSS and 8 his message has some prablems with machine interpretation First the set SKMOQSCAS has alternative fields without field descriptors The fields have the same formats 5 BN so there is way te determine the actual MOS or SSI usage of the field The interpretation we are ta this is MOS pertains
166. messages in system queues schedule a caller for each system with messages in its queue routine priority no messages check for shutdown command scan mode one pass continuous one pass mode or scan mode shutdown command no shutdown recieved command received Schedule E get site name and priority rom qms priority level gt conversation found mU check for existin conversation with desired site exit to qms available ports port table get a port to use for caller got a port priority messages routine message no available got a port ports try to pre empta routine call and sieze its port invoke a caller for desired site with given priority level update port table to show status of port exit and wait for port NER porttable Caller site name gt get arguments from user command or qms invocation portname lock site queue and reset modem on given port for debug level dialout operation on ds ee site table failure success use modem to 96 the remote site and 96 connection get phone number and login information from site table remote system success site table check call history in site table to see if site should be declared down yes ae error invoke lOControl with site HEAR w eA aaaa auooa gt n
167. net h finclude lt signal h gt include iocontrol h finclude l iocontrol e int 1 I J EOF Receive get a byte from the remote system via the modem waiting a maximum of MAXDELAY seconds for the byte If a character arrives return it to the caller If a byte is not received within the threshold return the error condition Receive int alrmint int i 0 Initialize wait to 0 char cptr Character to read from port unsigned char c Character to return cptr malloc 1 Just allocate a byte signal SIGALRM alrmint alarm MAXDELAY Set timeout interval if pow ModemFd cptr 1 gt 0 alarm 0 reset timer cptr Get that unsigned 8 bit character free cptr Return storage return int c We got a character alarm 0 free cptr return ERR Return ERR if timeout or error on read nt alrmint fprintf stderr ALARM in fflush stderr fclose ModemFp ModemFp fopen DIALO3 rb return ERR PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt RECEIVE C TIME 1987 02 12 1710 38 0 include net h include lt signal h gt finclude iocontrol h finclude iocontrol e Receive get a byte from the remote system via the modem waiting a maximum of MAXDELAY seconds for the byte If a character arrives return it to the caller If a byte is not re
168. nodes and to request database backup and recovery operations 45 TACCNET Technical Specification November 14 1986 The format of the administrative messages used to configure the network is simple The first line of the message body is the administrative command to be performed This may be add delete examine or change The remainder of the message must be a copy of the site table entry to be accessed See sec tion 4 3 4 1 for a description of the site table entry Administrative messages to transfer files or recover databases are slightly different There are three commands transfer save and recover The transfer command is used to request that a copy of a file be sent from one system to another The format of the command is transfer lt source path gt lt source file name gt lt target path gt lt target file name gt where lt source path gt and lt target path gt are the TACCNET paths of the source and target sites respectively lt source file name gt is the UNIX path name of the file to be copied and lt target file name gt is the UNIX path of the file to receive the copy If lt source path gt is omitted the system uses the current site name If lt tar get path gt is omitted the system uses the originator s address path from the message header If lt target file name gt is omitted the system uses lt source file name gt as the default The lt source file name gt must be supplied by the user
169. o Table driven does not use message dictionary Limitations Csource module for each message o Need embedded query language Database Operations Backup and Recovery Uses TACCNET to copy snapshot of database to remote node s Broadcast messages used to retrieve messages sent after snapshot o Backup and recovery procedures initiated by user or cron To recover from a failure o Thesnapshotisretrieved from one of the remote backup sites o Abroadcast message is sent to the network requesting retransmission of all messages sent to the failed site after the snapshot was made Network Simulation SLAM simulation on CDC Cyber Low moderate and high traffic Assume basic network segment 1 3 ports dialin and dialout Basic network segment Network Simulation Results Bottleneck at DMMC 2dialin 2 dialout gives best results 1 1 dialout is OK for leaf nodes Response Time vs Arrival Rate sec 180 11 2 120 a 3 60 0 06 0 12 msg sec 0 0 Further Investigation JINTACCS processing Message grammar parsing functional description Security Data and network security Expert Systems Structured format with ambiguities message processing Voice Technology Voice data interface for composition and display User Interface Tools Edit display messages during creation insulation from JINTACCS Di
170. of chains of sub fields The JINTACCS formats supply logical linkages between the defined sets fields and elements in the JINTACCS universe This type of structure is hierarchical by nature and would usually dictate a hierarchical database system for most efficient management However the primary usage of the database system on the TACCS is for the manipulation of the Command and Control information t We use the term message type to mean a message format specification such as POLLOC or SHORTSUP message an instance of a message type 48 TACCNET Technical Specification November 14 1986 used by each CSS unit Information is transmitted from one unit to another via JINTACCS Once entered the message format data is relatively static while the data changes frequently System users perform queries on the C database which often require relational operations These considera tions coupled with the ease of use power and availability of relational data base systems convinced us to employ a relational system for both database tasks Having chosen the relational model for our database design desirable proper ties of relation schemas were considered For the purpose of eliminating prob lems of redundancy and anomalies i e update insertion and deletion anomalies the relational schemas have been normalized The resulting data base schema guarantees that the redundancy in relations is kept to a minimum and that a
171. on the line waiting Processing of database queries could be stratified to provide immediate service for queries at top priority levels Ports and connections which are busy with routine transmissions may be preempted for priority transmissions The incor poration of these capabilities complicates the system and can introduce the pos sibility of deadlocks or race conditions as processes of different priority compete for resources There is also the matter of node failures What is to be done when there is a priority message for a site that cannot be contacted Should the message be immediately rerouted to a designated backup node for prompt action Does the type of message affect the action to be taken If so a knowledge base for the messages will be required for the system to determine the correct action for each type of message and each priority level Obviously this can become quite a serious consideration in the design of the system The bottom line is that the system should give fastest possible service to important messages preferably without degrading the performance of the network with respect to routine traffic TACCNET G36 633 Final Technical Report April 28 1987 The TACCNET prototype provides preemptive service for priority messages inserting them into active conversation streams where possible preempting routine transmission if necessary and scheduling calls and resources to give fastest possible service to priority messa
172. orly to enlisted while SSI pertains to warrant and canmissianed officers In this interpretation the actual usage is immatar ial and amp unique identifier results and the information may be parsed without areablem Actual usage of these fields may be different arid oroblemnms could be present that are not addressed by this demonstration problem is the fact that columnar sets SKCASLTY and SKMOSCAS are related but there 15 no line by line provided A usage convention is needed to able to crass check data values for validity In this demofristration the data will be merely displayed and attempt ta validate the values in sets will be attemoted Seve POL Locations Tne set SKAPOLLOC demeretrates alternative fields without field descripters This presents a problem in that field lacation has 5 alterna tive representations Four of these have unique lengths that identify the format that is used The fifth UNIT LOCATION NAME has a specificatian of 1 20 ANES and therefore could be confused with any of the other four formats this demcnstration the only valid location that wili be used will be the LOCATION UTM i mMETER sets GKFOLLOC SKCLTHRE shaw columrar sets where the data entry fields in set key the data back to the data in the previcus set Tne AMPN set page c in this message is conditional on the Judgement of the operator that the set must be included to complete the data S 34 Sup
173. process is invoked it 18 TACCNET Technical Specification November 14 1986 must be supplied with this list of phone numbers and the name of the com munications port to use The caller can then try dialing each number on the list in succession until one is answered and a connection established Once a connection is established operation proceeds normally If the caller cannot get an answer on any of the numbers the connection attempt has failed and this result must be logged The site table will be modified to indicate a failed attempt and the retry count will be checked against the defined ae to determine if the system should be declared down If the remote site is not declared down the system could wait for some specified delay interval and then try again This interval is called the retry delay and should be configurable by the operator at run time If the node is declared down the system should forward all messages for the remote node to the designated backup site and make courtesy copies for the down node The sys tem should then try to call the down site periodically to see if it has returned to service The interval between attempts should be long compared to the retry delay and should also be configurable by the operator This delay is called the down delay We would like to be able to determine the reason that the remote node did not answer the call To do this requires modem which can distinguish between ring no answ
174. programs each of which is composed of a number of functions 1 Some functions are used in more than one program and are therefore grouped in a library of common functions Each program has a primary function called in the file with the same name as the program C language source file names end in the suffix c Files whose names end in are header files containing global constants and data structure definitions Files whose names end in e contain declarations of external variables to be used by subprograms Each program has a corresponding command file called Makefile which contains lists of module dependencies and instructions for compiling and linking the program The is used by the UNIX program maintainer make to build a system of executable programs The reader of this document is expected to be familiar with the contents of the TACCNET technical specification titled Considerations the Design and Development of a Combat Service Support Computer System wherein the usage and operation of these programs is explained It will be difficult for persons not familiar with the C programming language to use this docu ment It will also be helpful to be familiar with the UNIX operating system under which TACCNET was developed The definitive reference for the C language is The C Programming Language by Brian Kernighan and Dennis Ritchie Prentice Hall 1978 There
175. provides the capability to run more than one copy of the system on a single physical machine This allows a node to perform the functions of a down or departed node in addition to its own work Other nodes in the network do not need to know that the down node is being emu lated All that is required to set up an emulated node is to create a root directory for TACCNET to use to handle the emulated node s work disseminate the new phone number for the emulated node adjust the site tables of the local and emulated node to show that they are in fact resident a single machine and invoke TACCNET in the new root directory This capability can be used to maintain a logical configuration even when net work nodes are destroyed TACCNET Technical Specification November 14 1986 3 2 Middle Level Issues In this section we will discuss issues relevant to the design implementation and operation of the major CSSCS communications system components These issues include component interfaces data structures resource management message processing and database operations 3 2 1 Component Interfaces The CSSCS will be composed of several components including Decision Sup port DataBase Management and Communications These components will in turn be composed of subsystems and processes which will cooperate in the per formance of various tasks The interfaces between CSSCS components and among the subsystems of the components must be well de
176. queue list ports params Figure 4 5 TACCNET directory structure 4 3 4 1 The Site Table The file tables sites contains a list of all sites that can be reached through this node in the network For each site information is stored about the site s phone number s and current status The file is a standard ASCII text file con taining several lines for each entry The first line which must begin with a colon specifies the site name an up flag a retry count an absolute retry time in seconds set and reset only by TACCNET software and a system type flag to distinguish whether the system is UNIX U GCOS C or locally emulated Last on this line is the password for access to the remote 64 TACCNET Technical Specification November 14 1986 system This is usually the same as the system s name except when operating system restrictions prohibit certain types of passwords All of these fields are separated by spaces The remainder of an entry varies depending on the system type If the system described is not locally emulated then the remaining lines contain phone numbers in the order of preference with each phone number on a line by itself If the system type is E locally emulated then the next line describes the complete pathname on the local machine of the TACCNET root directory for the emulated node Figure 4 6 shows a sample Site Table file sysa 1 0 000000000 U sysa 313
177. recovery The TACCNET system provides backup and recovery functions for the data base A set of command files may be used to send a copy of the database files to other nodes in the network for storage The stored copy may be retrieved later in the event of a system failure Transactions occurring after the saving of the database may be recovered by broadcasting a message requesting retransmission of all messages sent to the failed site after the database backup was made This message is propagated through the network and all relevant messages are recovered from node archives and retransmitted These transac tions are then run against the backup copy of the database and an up to date database results 4 18 Single machine emulation of multiple nodes A feature is provided to allow a single machine to emulate multiple nodes in the network This is useful in the event that a node is taken down for some period of time The network functionality can be maintained without extensive ES TACCNET G36 633 Final Technical Report April 28 1987 reconfiguration until the down node returns to service It may also be used for testing purposes All that is requires is that the operator create set of direc tories for use by the emulated system and then start a copy of the TACCNET software running in those directories 4 19 Automated network management via messages Network modifications are made easy through the use of network administra tive
178. relations As there was no informa tion available on the content or usage of the C database it was necessary to define the relations in an ad hoc manner The resulting prototype database should not be considered as a fieldable system it is merely a tool for demons tration of certain capabilities A complete description of the C database is given in the TACCNET technical specification document referenced above The TACCNET system was expanded to allow the automated generation of JIN CCS messages from the prototype C database and the automated posting of messages to the database Incoming JINTACCS messages were scanned and their com ponent data elements extracted and inserted into database relations Existing database relations were updated with the new information The primary focus of this task was to demonstrate the ability to maintain copies of a unit C database at several other sites in the network and to be able to access those copies and any relevant archived messages to reconstruct the C database in the event of a node failure TACCNET was used to transfer and retrieve the database backup files Broadcast messages and archive scanning were implemented to allow a node to request retransmission of all messages sent since the last backup was made A set of shell command files were gen erated to allow the user to easily make backups and retrieve them from other nodes 93 TACCNET G36 633 Final Technical Report April 28 1987
179. scheduling caller connections iocontrol transmission Message Generation and Processing genmsg generation msgproc processing Database Operations jms message composition server messages into C2 DB build messages from C2 DB User Interface console system administration Communications Runsin background sleep or cron Scans priority queue first then system queues in order taken from site table Invokes caller Handles preemption for Cuna Ld DA Communications caller Validates site information Establishes connection Handles connection failures Starts iocontrol process Handles transmission failures Releases port and system queue Updates site table focontrol Communications Transmits receives files Gets files from system queue Puts files into message processor queue Error detection correction Priority preemption Data transparency binary data transfer msgprocq iocontrol 1200 bps 2 iocontrol sysa Communications Transmission Protocol Similar to BSC stop amp Wait Window 1 o Data packets control packets ASCII control codes DLE STX ETX ETB EM EOT ACK NAK CAN Data Link Escape Start of Text End of Text End Text Block End of Message End of Transmission Acknowledge Negative Acknowledge Cancel Packets punctuated with CR
180. some systems do not allow communication between unrelated processes we must find way to signal or interrupt a running process The simplest method is to have processes periodically check for the presence of a special file A process wishing to interrupt another process simply creates the special file in a given directory When the target process sees the interrupt file On UNIX systems files having period as the first character of their names are hidden files a5 TACCNET Technical Specification November 14 1986 it exits freeing its resources for use by the waiting process The disadvantage of this method is that the periodic checks add to the system processing over head and may degrade system preformance The TACCNET prototype system checks for interrupt files between transmission packets if so configured and between message files by default 3 2 2 Connection Management One of the major mid level design issues is that of connection management This encompasses the establishment monitoring and termination of connec tions between systems 3 2 2 1 Modem Setup Once the system has determined that a call should be made to a remote node a process must take a communications port set the configuration of the port contact the modem on that port determine the telephone number of the remote node instruct the modem to dial the number and listen for the remote node to answer This process must determine whether the
181. standard output format 7 convesdlist head csfieldnode head int iy Ja k nj int LR m csfieldnode fptr form c Oct 30 10 50 1986 Page 35 csdatanode dptr fptr head point to the head of field list for j 0 fptr j count the fields fptr fptr next allocate storage for pointers to column value lists dptr csdatanode malloc j sizeof csdatanode set pointers to column lists for k 0 fptr head fptr amp amp k j k i dptr k fptr gt fchild fotr fptr gt next while dptr 0 while there are still data values to print printf begin new line with slash i 2 fptr head print one line of data tabbing to column fields for fptr k indent appropriately and print data atoin fptr colpos strlen fptr colpos 1 LR strien fptr gt colpos switch fptr colpos LR 1 tab to next field case 11 for i n i putchar break case R m ntstrlen fptr gt colhdr strien dptr k gt csdata for i m i putchar break printf s dptr k csdata i tstrlen dptr k csdata 1 dptr k dptr k next fptr fptr next 1 Get the field level data from the linked lists 2 Convert them into standard output format convtsnode ptr form c Oct 30 10 50 1986 Page 36 tsnode ptr printf
182. stderr MakeCC Cannot create a new feeder queue entry n return ERR Try to recover rewind MsgFileFd Reposition the original file at beginning SkipEOL MsgFileFd Skip the first line since we re rewriting it fprintf CCMsgFd gt C is Wn MsgPriority NewSiteName Make Copy the remainder of the file word for word while fgets MsgLine LINELEN MsgFileFd NULL Loop to EOF fputs MsgLine CCMsgFd Copy the line fclose CCMsgFd Close the file now that it s ready Rename the message file so that it appears in the queue FileNQ CCMsgName l MSGPROCQ put message in xcvr input queue rewind MsgFileFd Put it back at the beginning return GOOD No error mpmail c Oct 30 10 51 1986 Page 26 finclude net h extern DebugLevel int MPMail MsgName char MsgName message file name assume message in MSGPROCQ i FILE MsgFd message file descriptor char UserName user name to receive mail message pathname Path message destination path pathname Command buffer to build UNIX command into if MsgFd FileOpen MsgName MSGPROCQ r NULL i WriteLog MPMail can t open MsgName return ERR SkipEOL MsgFd skip the priority line fscanf MsgFd c s Path read in the message path UserName StripMe Path Command point to user name if
183. strcpy Temp shellfile Top 0 0 E addstr x Kludge city refresh clear refresh echo nocrmode signal SIGINT SIG IGN Ignore interrupt if Result fork 0 signal SIGINT SIG DFL chdir sprintf Path s Temp if Shell getenv SHELL char X 0 Shell malloc strlen DefaultShell 1 strcpy Shell DefaultShell exec Shell Shell c Path 0 printf n nError Cannot invoke user shell Set your SHELL printf environment variable naccordingly 7 printf s was not found n Shell fflush stdout h3 runshell c Oct 30 10 51 1986 Page exit 1 wait amp stat_loc signal SIGINT ExitProcessor noecho crmode if stat loc w S w Stopval WSTOPPED Check for stopped vs term ed i addstr n nThe background process was STOPPED unexpectedly printw The signal was dXn stat loc w S w Stopsig if flag TRUE The user had typed the previous command himself CmdPrompt Next command Temp 64 if strlen Temp goto Top else CmdPrompt Press CR to return to console Temp 10 ReDraw return Result Only in parent s case saveconf c Oct 30 10 51 1986 Page 45 include console h SaveConf save current configuration for later retrieval void SaveConf i char ConfFileName 80 Configurati
184. stream Fd into a site structure allocated here return pointer to struct site Site int int 170 pathname TempBuf Site site malloc sizeof site fscanf Fd Zs TempBuf Site gt SiteName malloc strlen TempBuf 1 strcpy Site gt SiteName TempBuf 0 fscanf Fd Zd Zd 714 Zs amp Site gt Status amp Site gt NumCalls amp Site gt TimeToCall amp Site gt SysType TempBuf Site gt Password malloc strlen TempBuf l1 strcpy Site gt Password TempBuf SkipEOL Fd phone numbers begin on next line c getc Fd read in the array of phone numbers while c NL amp amp c BLANK amp amp FIELDMARK 86 EOF amp amp lt MAXPHONENUMS ungetc c Fd fscanf Fd Zs TempBuf Site gt PhoneNum i malloc strlen TempBuf 1 strcpy Site gt PhoneNum i TempBuf 1 SkipEOL Fd go to next line getc Fd and get the first character Site gt PhoneNum i NULL 1 mark end of list return Site EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt READDI C TIME 1987 02 12 1702 29 1 finclude net h fdefine NFILES 64 char Entries NFILES FILENAMELEN ReadDir Return directory structure expected by dequeue containing entries in directory specified by parameter Dir This version is rewritten specifically for the Honeywell DPS 6 char ReadDir Dir
185. system should give fastest possible service to important messages preferably without degrading the performance of the network with respect to routine TACCNET Technical Specification November 14 1986 traffic The TACCNET prototype provides preemptive service for priority messages inserting them into active conversation streams where possible preempting routine transmission if necessary and scheduling calls and resources to give fastest possible service to priority messages Only two levels of messages are recognized priority messages and routine messages Priority messages get fastest possible service while routine messages are served on a first come first served basis In a fielded system there will probably be a need for more different levels of priority but we do not know at this time how many or what types of service they would require 3 1 1 3 Alternate Sites In the event that a node is down and cannot be reached what is to be done with messages for that node Some messages are routine reports and can wait until the site returns to action and calls for them but others especially priority messages may require fast or even immediate action With this in mind the TACCNET prototype uses a table of designated alternate sites for each node in the network to re route messages targeted for inactive sites The method used is to keep a list of sites which can take over the processing of important mes sages during the node s abs
186. that it can serve as a backup file from which the tables ports is reloaded before the system is restarted dev 4 00 xenair dev tty01 free Figure 4 8 Port table file 4 3 4 4 The Alternate Sites File Whenever the Message Processor determines that a site is down it attempts to send the enqueued messages for that site to its defined backup site The file tables altsites contains a list of all sites and their backups The format of this file is similar to the others Each site is preceded by a colon fol lowed by a colon and any alternate sites in the order in which they should be attempted Figure 4 9 shows a sample Alternate Sites file sir TACCNET Technical Specification November 14 1986 SySa Xenair sysb xenair Sysd sysa xXenair Sysc d mmci Figure 4 9 Alternate sites file 4 3 4 5 The Queue List The file tables queuelist contains a list of queues directories for use by some of the shell scripts to maintain and monitor the system The shell script cleanup which removes all files from the system queues after aborting the sys tem operates on the queues listed in this file The shell seript qstat which examines the contents of the main system queues for display on the operator s console also uses this file The Queue List should contain the names of the major system queues such as the site queues message processor queue prior ity queue server queue and erro
187. the Message Database A user may create a message simply by responding to a system provided prompt for each data item Messages are stored in multi level doubly linked lists while they are being constructed This makes it possible to update a message dynamically during creation 09 TACCNET Technical Specification November 14 1986 4 2 4 4 1 System Software Components The system software has been implemented in modular fashion as well as in hierarchical structure to support many desirable programming concepts includ ing modularity and portability This is considered important since expansion is expected in later versions 4 2 4 4 1 Message Handling Module The major part of the system program has been written in a hierarchical fashion to conform to the structure of the messages There are four major modules in the program In order of invocation they are message handler set handler field handler dfi handler The message handler which is part of the main routine initiates the format for each message to be created by retrieving information from the message database It also supplies the user prompts for input data e g message title and begins to process interactively upon the user s response In the next stage the set handler is called with the name of the message and re trieves the relevant collection of sets from the database The set handler has three submodules one for each type of set linear columnar and
188. the media available for CSSCS data transfer it is desirable to have a system which is independent of communications medium Limited bandwidth for digital communications encourages reduction of data redundancy in message formats and message redundancy in reporting systems The CSSCS environment places the following constraints on the CSSCS e restricted bandwidth for communications e media transparent communications e nodes join and depart the network at will e nodes subject to catastrophic failure e must provide distributed backup and recovery of C databases e must automatically route messages for timely delivery e must detect failures and reroute messages accordingly e messages in JINTACCS format The system must observe these constraints and carry out its functions with a minimum of operator intervention TACCNET Technical Specification November 14 1986 3 Design Issues In this section the major CSSCS design issues and decisions identified during the development of the TACCNET system will be discussed These issues are divided into three categories High level issues are those which concern the entire network and its functions Middle level issues involve the various TACCNET components their interfaces and their modes of operation The low level design issues involve operating system interfaces hardware limita tions protocols and device management In the development of the prototype TACCNET system for CSSCS it was observed
189. tion 51 TACCNET Technical Specification November 14 1986 RECORD F IELD REF TYPE LEN LONG NAME msg 100 messages mal ias STRING 10 ALIAS mno STRING 4 MESSAGE NO mtitle STRING 30 TITLE sets 100 sets getkey SET_KEY salias malias STRING 10 ALIAS ano NUMERIC 2 SET_NUMBER scat STRING 3 CAT setid STRING 8 SET_ IDENT fleld 200 fields sfidkey COMB FIELD KEY fsetid STRING 8 SET_IDENT fno NUMERIC 2 FNO fcat STRING 3 CAT fname STRING 40 FIELD NAME fcol STRING 3 J f dfi STRING 5 DFI fdui STRING 3 DUI dfs 300 d s dfikey COMB DF I ddf STRING 5 DFI ddui STRING 3 DUI dfdesc STRING 8 FLD DESC dcolhdr STRING 24 COL HEADER dlrj STRING 1 J dformat STRING 10 NO TYPE dremarks STRING 20 REMARKS 300 edfis cdfkey COMB CDF I KEY STRING 5 CDFI cno NUMERIC 2 CNO STRING 5 EDF I edui STRING 3 DUI Figure 4 4 UNIFY Database Schema for message dictionary 4 2 4 4 The Software The message system programs in executable files yms and ams are written in the C programming language and include the UNIFY C interface functions to access the database The main purpose of jms is to allow a user to create message interactively on terminal screen The ams program is used to recieve data from a pipe and format it into a JINTACCS message It is used by pro grams which query the C database and generate messages autom atically All of the information about message definitions is retrieved from
190. to use these functions to accomplish his objectives There is no high level mechanism to perform relational operations in UNIFY from a user program UNIFY separates the C interface from its query language SQL The UNIFY rou tines for database manipulation are provided as part of UNIFY host language functions which includes the interface between user programs CRT terminals the printer and the database Since the number of database manipulation func tions exceeds 40 and since these are not so well defined as those in query languages these may be harder to understand than embedded query languages It is also a burden for the user to master another set of database manipulation functions as well as a query language We consider the availability of an embedded query language for the relational database system on the TACCS to be highly desirable Such a feature facili tates development extension and maintenance of a database 4 2 4 6 3 The Software The system software has been implemented in modular structure as well as in hierarchical structure to support many desirable programming concepts includ ing modularity and portability These design features should be considered highly important since in later versions expansions and or changes may be at tempted to the existing modules to include more desirable features Also changes in the message definitions should not affect the software at all since they will be made by the changes to the
191. total number of casualties from the entries in fields 2 3 4 and 5 for the personnel class entered in field 1 DFI 959 DUI 001 Set Identifier 5KMOSCAS C This set is mandatory if the casualties reported are to be further classified by specialty skill identifier military occupational skill code Field 1 Specialty Skill identifier M Enter the appropriate specialty skill identifier DFI 4027 DUI A02 OR Military Occupational Specialty Enter the desired military occupational specialty code DFI 2564027 DUI A01 Field 2 Actual KIA M Enter tne number of personnel killed in action for the code entered in field 1 DFI 959 DUI 006 184 5 500 003 June 1984 MESSAGE INSTRUCTIONS Page 3 of 3 MESSAGE NUMBER 5006 TITLE Casualty Information Report CASSTATS SPECIAL INSTRUCTIONS Continued Set Identifier 5 05 5 C Continued Field 3 Actual WIA M Enter the number of personnel wounded in action for the code entered in field 1 DFI 959 DUI 013 Field 4 Actual MIA M Enter the number of personnel missing in action for the code entered in field 1 DFI 959 DUI 014 Field 5 Actual Non Battle Casualties M Enter the number of non battle casualties for the code entered in field 1 DFI 959 DUI 01 Field 6 Count of Personnel M Enter the total number of casualties from the entries in fields 2 3 4 and 5 for the code entered in field 1 DFI 959 DUI 001
192. type is ptr gt notype wmove main win y x wrefresh main win wget field main win DVAL ptr dtype ptr dmin ptr dmax L ptr fdcat if EQUALS DVAL 0 strcpy DVAL Rn strcpy COMBI ptr gt fdesc strcat strcat COMBI DVAL strcpy ptr fval COMBI else if EQUALS DVAL strcpy ptr fval DVAL f 1EQUALS DVAL amp amp EQUALS DVAL EQUALS DVAL POS ptr gt fdno else if POS ptr gt fdno ptrpos ptr THRU TRUE if EQUALS b1 sup DVAL if LEQUALS b1_sup ptr1 gt setcat M SET_STOPPER TRUE else print_imsg This set is MANDATORY wmove main wrefresh main win wget _ field main win DVAL ptr gt dtype gt ptr gt fdcat THRU FALSE if SET STOPPER NH FNO ptr gt fdno while ptr oldptr ptr ptr ptr gt Next wmove main_win oldptr gt y oldptr gt x wrefresh main_win if POS FNO dellslist ptrpos return end of while THRU fresh nain win ptr gt fdno ptr ptr gt Next end of while if POS lt FNO dellslist ptrpos dsp c Oct 30 10 51 1986 Page 13 waddchf xwin X WINDOW xwin char waddch xwi n X fprintf usr airmics shinn bin ams out Sc X waddstrf xwin STR WINDOW xwin char STR
193. unknown sites to log in since sites may come amp go using administrative messages to change our tables They still have to get in through password security at the login level Validate the site before going on if DebugLevel amp amp ValidSite RemoteName NULL WriteLog WaitName contact from unknown or inactive site RemoteName FlushModem nput ModemFd free ResponseBlock Get rid of unneeded storage smart sleep 3 HONEYWELL KLUDGE SendByte ACK Transmit acknowledge signal MSGPROC This section contains the functions used only by the Message Processor program MSGPROC Table of Contents Thu Oct 30 10 52 03 1986 File Makefile 0 Page File msgproc e Page 3 Files activatesite c Page 4 ACUIVATES LO Ia NEGRA Y E T ERA TN File administer c Page 6 Administer x9 nee ava Unda iu dd 6 File changesite c Page 7 35 9 VR 7 File deletesite c Page 9 Delete5 t8 Se wee ar S CUP OUR CSR we RRS g File examinesite c Page 11 Exam 9 5 11 Files forward c Page 13 FOFWaEFd 13 File getaltsites c 1 cook Sad be Re mh E 14 Files getline c Page 16 GetLine ES Vd dE Nd 16 File getmsghead c Page 1 7 GetMsgHead
194. unlock SysName queue if FreePort PortName ERR WriteLog Caller could not free PortName after use if IntFlag This means that IOControl returned after interrupt if unlink IntFileName ERR We must then acknowledge WriteLog Caller could not remove IntFileName exit retcode EOF finclude ZSYS72 gt UDD gt GOLDBERG SUNIX gt CHECKD C 1987 02 12 1559 15 6 net h int CheckDown site RSite Returns TRUE if site is declared DOWN FALSE otherwise Sets callback time appropriately and updates number of failed calls PutSite sets status and frees site entry storage EOF RSite gt NumCalls increment the retry count if RSite gt NumCalls gt MAXCALLS else RSite gt Status DOWN declare the site down RSite gt NumCalls MAXCALLS 1 RSite gt TimeToCall NOW DOWNDELAY PutSite RSite save entry amp release storage WriteLog CheckDown RSite gt SiteName is down return TRUE RSite gt NumCalls lt MAXCALLS means try again later RSite gt Status RETRY declare the site delayed RSite gt TimeToCall NOW RETRYDELAY WriteLog CheckDown Jjvite oSiteNane temvorarily down PutSite RSite save entry amp release storage return FALSE PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt DIAL C TIME 1987 02 12 1602
195. used to distribute network wide routing information Shinn reported progress in the development of the screen editor interface for the JINTACCS message entry system The system used the curses screen han dling package This package is supported on almost all UNIX systems with only minor differences among the different UNIX versions a 19 TACCNET G36 633 Final Technical Report April 28 1987 The interface as planned would prompt the user in a screen oriented as opposed to line oriented manner and use the responses to build a JINTACCS format message The user would be able to examine the message at any point in the composition process The GCOS system conversion proceeded slowly An apparent bug in the GCOS device handler caused the transmission of the DEL character as a filler in spite of configuration commands that should have disabled this feature The low level I O routines of the IOCONTROL module were rewritten for GCOS while the DEL problem and the C Linker problems were being investigated A hard disk failure on the xenair PC AT XENIX system rendered that system inoperative TACCS DISTRIX 2 0 system was obtained and installed The TACCNET software was ported over to the new system The port was accomplished without incident and the system functioned as a regular TACCNET node We were unable to run the UNIFY dbms system on the TA CCS different cpu This prevented the TA CCS node from running the C databas
196. wKUNITCAS SKCASLTY SKNOSCAS RMKS DWNGRADE M M M M M M M M gt oe o FIELD NO Cn con amp WA D 6 Por anon MANDATORY ENTRY FLD DESC COL ACTKIA ACTWIA ACTMIA ACTNBC CTPERS MILPERCL ACTKIA ACTYIA ACTHIA CTPERS SC MOS 5 05 ACTKIA ACTWIA ACTMIA ACTNBC CTPERS MESSAGE CONTENT ss ss us OUT P 4e f FIELD NAME AS OF DATE TIME REPORT SERIAL NUMBER UNIT IDENTIFICATION UNIT IDENTIFICATION ACTUAL KIA ACTUAL WIA ACTUAL MIA ACTUAL NON BATTLE CASUALTIES COUNT OF PERSONNEL MILITARY PERSONNEL CLASS ACTUAL KIA ACTUAL WIA ACTUAL ACTUAL NON BATTLE CASUALTIES COUNT OF PERSONNEL SPECIALTY SKILL IDENTIFIER MILITARY OCCUPATIONAL SPECIALTY ACTUAL KIA ACTUAL WIA ACTUAL MIA ACTUAL NON NATTLE CASUALTIES COUNT OF PERSONNEL DOWNGRADING AND DECLASSIFICATION MARKINGS START COL J eL iR 25R 320 39R 2L 2L 11R 15 258 328 39R PAGE 2 OF 2 NO TYPE NO 6 N C 914 6 AN 487 l 24 ANBS E 987 6 21 ANS 095 1 4 959 l 959 l 4AN 959 j AAN 959 l 4AN 959 1A E 168 l 4AN E 959 l 4AN 959 l 4AN 959 l 959 l 4AN 959 4027 5 AN 4027 l 4 959 l 4 959 l 4
197. win WINDOW helpcom win FILE fopen int X screen position y x coordinate int col 0 number of columns for indentation int SWITCH Switch between COMMAND and INPUT modes int EMPTY TEXT Indicator for empty text in the free text set int SET STOPPER indicator for leave the set char ALIAS 11J Short Message Title char MNO 5 message number char TITLE 31J message title char FDESC 9 data field descriptor char 41 data field identifier char SCOL_J 4J start column char CHDR 251 column header 11510 head Head pointer to level O linked list listo Current position of level O linked list listl ptr Current position of level linked list taills Tail pointer to linear set list level 2 csfnode tailesf Tail pointer to columnar set header list level 2 csdnode tailesd Tail pointer to columnar set data list level 2 tsnode tailts Tail pointer to free text set list level 2 f MRR RRR IIR ITI ams c THE MESSAGE SYSTEM This is the main routine LH ye dese sede dese RIN defe fefe dede e de dese deese TEN TET dese TE TCR IE TEETER TC main jms c Oct 30 10 51 1986 Page 23 int die X signal handler head NULL
198. with different response time requirements It is also reasonable to expect that there will be messages of different priorities flash immediate secret etc requiring different levels of service The question then arises what types of special services are required for these types of messages We may expect at least that there will be a requirement for immediate or fastest possible delivery and processing There may also be a need for immediate reply while the sending node remains on the line waiting Processing of database queries could be stratified to provide im mediate service for queries at top priority levels Ports and connections which are busy with routine transmissions may be preempted for priority transmissions The incor poration of these capabilities complicates the system and can introduce the pos sibility of deadlocks or race conditions as processes of different priority compete for resources There is also the matter of node failures What is to be done when there is a priority message for a site that cannot be contacted Should the message be immediately rerouted to a designated backup node for prompt action Does the type of message affect the action to be taken If so a knowledge base for the messages will be required for the system to determine the correct action for each type of message and each priority level Obviously this can become quite a serious consideration in the design of the system The bottom line is that the
199. 0 51 1986 Page 49 else ptri parent schild ptr1l gt Next ptrl gt Next gt Prev NULL ptrl ptri Next else a ptr 1 gt gt 1 if ptrl Next NULL ptrl gt Next gt Prev ptr1 gt Prev ptrl Prev free tptr1 scr c Oct 30 10 51 1986 Page 50 include jms h file name scr c This file contains screen 1 0 handling routines 4 ee eee a ee eee ee ee eee eee eee eee I 1 wget string win str WINDOW win char str int c int i 0 while c getchar Q l amp amp DEL i swi tch case b if i gt 0 S waddch win c waddch win waddch win c else i putchar BEEP wrefresh win break case ESC getyx main command handler break default waddch win c wrefresh win c break if c DEL ex handler 1 else if c r waddch win else str i 0 ser c Oct 30 10 51 1986 51 weetchar win WINDOW win int 3 switch c wgetch win case DEL ex handler 1 break case ESC return c break
200. 1 12 13 14 15 16 17 References ACCS A3 400 004 Interface Specification For Maneuver Control Element Interface With Combat Service Support Control Element August 1984 ACCS A3 400 005 Interface Specification For Air Defense Control Element Interface With Combat Service Support Control Element 9 November 1984 ACCS A3 400 008 Interface Specification For Combat Service Support Control Element Interface With Intelligence Electronic Warfare Control Element 9 November 1984 ACCS A3 400 009 Interface Specification For Combat Service Support Control Element Interface With Fire Support Control Element 9 November 1984 ACCS A3 500 003 Army Command and Control Systems Character Oriented Message Format Standards June 84 ACCS A3 500 003 Army Command and Control Systems Character Oriented Message Format Standards Supplement 1 June 84 JINTACCS Technical Interface Design Plan Volume VIII Combat Service Support October 1984 JINTACCS Technical Interface Design Plan Volume VIII Combat Service Support Appendix E COM Text Formatting Rules June 1984 Human Factors In The Display Of JINTACCS Messages Tech Rep USAISEC _ RARA 85 2 D Sharpe and A Badre 9 October 1985 Analysis of the Data Processing Requirements of CSSCS Tech Rep USAISEC ASBG 85 1 M Graham 20 September 1985 OSSCS C Information Requirements 4 October 1982 JINTACCS and JABBERWOCKSY
201. 1 standout Borders are inverse video move Window num TopLine Window num LeftSide for i 0 i lt Mindow num Width i addch BORDERCHAR for i 1 i lt Window num Size i mvaddch Window num TopLine i Window num LeftSide BORDERCHAR mvaddch Window num TopLine i Window num LeftSide Window num Width 1 BORDERCHAR if flag amp amp GoodTerminal 1 standend refresh printmenu c Oct 30 10 51 1986 Page 37 include console h PrintMenu display the menu items at the bottom of the standard screen void PrintMenu i int i j int x Coordinates returned from getyx long t char Clock char ctime time amp t Clock ctime amp t wmove Command 0 0 Move to the bottom of the screen if GoodTerminal 1 wstandout Command for i 11 i lt 19 i waddch Command Clock i for i 8 i lt 80 i waddch Command wmove Command 0 80 strlen ThisName waddstr Command ThisName if GoodTerminal 1 wstandend Command wmove Command 1 0 Move to beginning of menu line wclrtoeol Command Erase previous menu waddstr Command Command waddstr Command for i 0 i lt MenuSize CurTier i if i CurSel ansia Command Highlight selection if current if GoodTerminal waddstr Command Men
202. 107 7107 Path i 1 EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt UNLOCK C TIME 1987 02 12 1724 55 0 finclude net h int UnLock FileName returns ERR if the file could not be unlocked GOOD otherwise char FileName pathname LockFile int Result 0 sprintf LockFile Zs LCK FileName Result unlink LockFile if Result ERR WriteLog UnLock can t unlock LockFile return Result EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt VALIDP C TIME 1987 02 12 1725 29 1 finclude net h int ValidPath Site Path char Site char Path FILE PathTableFd char SomeSite 128 register int cj if PathTableFd fopen PATHTABLE r NULL fprintf stderr ValidPath Can t open ZsMn PATHTABLE exit 1 getc PathTableFd skip first colon do fscanf PathTableFd Zs SomeSite get a site fprintf stderr Path table entry Zs SomeSite if EQUALS SomeSite Site fprintf stderr matched n getc PathTableFd read NL fscanf PathTableFd Zs Path fclose PathTableFd return TRUE else fprintf stderr not matched n c getc PathTableFd while c FIELDMARK amp amp c EOF getc PathTableFd while EOF fclose PathTableFd return FALSE EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt VALIDS C TIME 1987 02 12 1726 10 2 finclude net h s
203. 12 errmsg c Oct 30 10 50 1986 Page 13 finclude retcodes h ErrMsg return an error message to be printed to log file based on constant return codes char ErrMsg code int code Code for which error message should be generated char Temp 10 char RetPtr char malloc switch code return MLOSTCONTACT case BADCONNECT I ON return MBADCONNECTION case BADREMOTENAME return MBADREMOTENAME case FATAL return MFATAL case INTERNALERROR return MINTERNALERROR case RECOVERABLE return MRECOVERABLE case LOSTCONTACT sprintf Temp code RetPtr malloc strlen Temp 1 return RetPtr default getprompt c Oct 30 10 50 1986 Page 14 include net h include jocontrol e GetPrompt read string from the modem line and return a pointer to it End of string will be indicated by a timeout on read operation There may be embedded newlines or returns but these will not mark the end of the string If no characters are read return a null string Strip parity bit in case ISTRIP doesn t work char GetPrompt 0 char ptr char TempBuf 80 int int c while i 80 read until timeout or overflow if c Receive ERR ERR means timeout so exit break else if c amp 0x7f 0 TempBuf i 5 7 buffer character increment counter TempBuf i O mark end of string
204. 20 2 finclude net h define MAXWAIT 10 char ReadStr Str char Str ReadStr will read a string from the modem into the space pointed to by String The input will be terminated by a CR or NL character The calling routine must insure the presence of sufficient space at String ReadStr will return a pointer to String if it succeeds or the value NULL if it fails register int nj register char Ptr NULL char GetStr for n 0 n lt MAXWAIT amp amp Ptr NULL n Ptr GetStr Str return Ptr char GetStr String char String EOF char Ptr Ptr String 1l do Ptr if Ptr Receive ERR return NULL while Ptr amp amp Ptr NL 0 replace newline or cret with null point to start of storage get bad return String good return pointer to string character from modem return timed out PATH 7SYS72 gt UDD gt GOLDBERG gt UNIX gt REMOVE C TIME 1987 02 12 1711 19 7 net h define FATAL 40 int Remove FileName QueueName filename FileName pathname QueueName pathname DirName char getdir getdir DirName 0 Find out working directory name chdir QueueName if unlink FileName ERR chdir ZTEMP Try the temporary directory if unlink FileName ERR WriteLog Remove FATAL can t delete FileName
205. 33 Final Technical Report April 28 1987 be a Cermetek Infomate 1200 bps modem The proper configuration of the Honeywell port is explained in section 4 3 7 4 Software The TACCNET prototype system provides automated database operations for a sample set of three JINTACCS messages These messages may be generated from information stored in the prototype database or they may be used to update information in the database These functions are provided by the data base server program and are dependent on the presence of the UNIFY relational database management system Tlie dbms must be configured to include the relations defined for the C database prototype which is described in section 4 2 4 TACCNET G36 633 Final Technical Report April 28 1987 8 Recommendations and Conclusions In this report we have summarized the issues encountered and work done by the project team during the development of the prototype TACCNET system for the CSSCS Some of these considerations are general and will apply to any information and communications systems developed for use in the CSSCS environment Others are dependent on the specific functional requirements of the proposed system It is critical to define and describe the complete set of functions to be performed by the system so that such design considerations may be discussed and resolved before the system is built We also believe that the CSSCS information requirements are not yet sufficient
206. 4 extern int ModemFd extern int DebugLevel int Login Name Password SysType char Name char Password char SysType char System 2 char 40 char PromptStr int Count 0 int State if DebugLevel print buffer for SysType print buffer for talking to remote systems prompt string from remote site allocated by GetPrompt retry count for logging in to UNIX systems connection state for UNIX login automaton WriteLog Login Connected about to log in as Name 1 switch SysType case GCOS must change parity and deal with Honeywell struct termio TTYSet int i if DebugLevel WriteLog Login system is GCOS n m Reconfigure modem for even parity if ioctl ModemFd TCGETA amp TTYSet ERR get old modem settings WriteLog Login Can t get old modem settings as return ERR TTYSet c cflag PARENB Enable parity on Honeywell TTYSet c cflag amp PARODD Set parity to even TTYSet c cflag amp CSIZE TTYSet c cflag CS7 7 data bits if ModemFd TCSETA amp TTYSet ERR set new attributes WriteLog Login Can t set new modem attributes UR HH return ERR login c Oct 30 10 50 1986 Page 17 Done now continue login write ModemFd CR 1 refresh login prompt sleep 4 write
207. 4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC EOF ZSYS72 gt UDD gt GOLDBERG gt UNIX gt COMPJOB EC 1987 02 12 1734 23 9 CALLER C AS LE CHECKDOWN C AS LE CHECKSUM C AS LE CREATEFILE C AS LE DATETIME C AS LE DEQUEUE C AS LE DIAL C AS LE DIR C AS LE ENDSWITH C AS LE FILENQ C AS LE FILEOPEN C AS LE FRENAME C AS LE GETBLOCK C AS LE GETFILE C AS LE GETHEADER C AS LE GETPACKET C AS LE GETPROMPT C AS LE GIVETOMP C AS LE HANGUP C AS LE IOCONTROL C AS LE LOCKFILE C AS LE LOGIN C AS LE MOVMEM C AS LE MYNAME C AS LE NEWFILE C AS LE OPENMODEM C AS LE PORTS C AS LE PREEMPTION C AS LE PUTSITE C AS LE READSITE C AS LE READSTR C AS LE RECEIVE C AS LE REMOVE C AS LE SEND C AS LE SENDBLOCK C AS LE SENDBYTE C AS LE SENDENQ C AS LE SENDFILE C AS LE SENDHEADER C AS LE SENDNAME C AS LE SENDPACKET C AS LE SETHAYES C AS LE SETPORT C AS LE STATE C AS LE STRIPME C AS LE VALIDSITE C AS LE WAITACK C AS LE WAITENQ C AS LE WAITNAME C AS LE WRITELOG C AS LE f PATH TIME M4 CC M4 CC CC CC CC M4 CC EOF ZSYS72 gt UDD gt GOLDBERG gt UNIX gt COMPJOB2 EC 1987 02 12 1735 18 1 DIR C MR LE AS LOCKFILE C MR LE AS OPENMODEM C MR LE AS SENDBLOCK C MR LE 5 SENDHEADER C MR LE AS SETPORT C MR LE AS PATH TIME CALLER GIVETO CHE
208. 4 _4_4__ _ __ _ __ _ __ 4 delcsfnode ptr csfieldnode ptr i if ptr fchild NULL delcsdlist ptr fchild if ptr prev NULL if ptr next NULL ptr parent NULL else ptr gt parent gt uval cschild ptr gt next ptr gt next gt prev NULL else ptr prev nextz ptr gt next if ptr next NULL ptr gt next gt prev ptr gt prev free del c Oct 30 10 50 1986 Page delete the list followed by the node pointed to by ptr12 and all the sublists SSS delcsdlist ptr csdatanode ptr if ptr next NULL delesflist ptr gt next delcsdnode ptr indirectly recursive with del2list delete the node pointed to by 2 and all its children delcsdnode ptr csdatanode ptr if ptr prev NULL if ptr next NULL ptr gt parent NULL else ptr gt parent gt fchild ptr gt next ptr next prev NULL else ptr gt prev gt next ptr next if ptr next NULL ptr next prev ptr gt prev men del c Oct 30 10 50 1986 Page indirectly recursive with del2list delete the node pointed to by 2 and all its children 2 deltsnode ptr tsnode ptr i ptr parent uval tschild NULL free Delete all the SET IDE
209. 5034 Result PostSUP MsgFd break Writelog Post don t know how to post MsgType message if Result GOOD i WriteLog Post can t post MsgType for Originator return ERR WriteLog Post posted MsgType from Originator return GOOD postcas c Oct 30 10 52 1986 13 include net h include server h int PostCAS MsgFd FILE MsgFd char Command 80 Command for running DBLOAD char Name 25 Name of unit being reported char TempBuf 25 Temporary name storage int LastLine FALSE Set after last line read char 551 MOS 10 military specialty code char Count 4 10 array for data on number of KIA MIA WIA NBC char CTPers 10 trailer field means ond of data int Result int Found FALSE int Len i FILE DataFp fopen DATAFILE w Open output data file Result fscanf MsgFd TempBuf skip down to KUNITCAS set while Found amp amp Result EOF if EQUALS TempBuf KUNITCAS Found TRUE else SkipEOL MsgFd skip to next set Result fscanf MsgFd TempBuf keep looking if Found couldn t find the start of the data WriteLog PostCAS can t find KUNITCAS set um fclose DataFp return ERR fscanf Msgrd 1 Name read Unit ID field SkipEOL MsgFd Skip trailing fields
210. 57 8 finclude net h extern int ModemFd Modem file descriptor opened elsewhere int Dial TelNums char TelNums 20 Telephone numbers char CtrlN 710167 InfoMate control character char DialCmd 80 Space for dial command char ch 80 int RetCode int Result printf about to set modem parameters n sprintf DialCmd xy r n write ModemFd DialCmd strlen DialCmd sprintf DialCmd ZcP 00 Ctr1N was P 24 write ModemFd DialCmd strlen DialCmd sleep 1 sprintf DialCmd ZcD 48 CtrlN TelNums 0 write ModemFd DialCmd strlen DialCmd Result read ModemFd ch 79 Read response while Result 1 amp amp 01 Ctr1N amp amp 1 f A Result lt 1 while ch 1 if ch 1 T amp amp Cch 1 n amp amp ch 1 1 printf got Zx from modem unexpected Wn int ch 11 read ModemFd ch 79 printf Connected to remote system n return TRUE EOF rFALH ZSYS 2 gt UDD gt GOLDBERGOUNIX gt GETPRO C TIME 1987 02 12 1619 26 5 finclude net h finclude iocontrol e GetPrompt read a string from the modem line and return a pointer to it End of string will be indicated by a timeout on read operation There may be embedded newlines or returns but these will not mark the end of the string If no charac
211. 6 xenair 1 0 000000000 E xenair tmp taccnet honey 0 3 4168731203 G diffpwd 98944310 sysd 1 0 000000000 U sysd 2414 tacesb 2 2 593281304 U taccsb Figure 4 6 Site table file Making changes to this file requires saving this file as both tables sites and tables sites save The second file is used as a backup of the default configuration in case it is ever desired to reset the various flags contained therein Site names cannot be any longer than eight characters and must all be unique The up flag is composed of an ASCII character indicating the status of the remote system as determined by communications failures A value of 1 indicates that the corresponding node appears to be up A value 0 means that the node was determined to be down based on the downed node algo rithm A value 72 indicates that the node appears down or busy and that one or more retries will be attempted before the site is declared down The retry count field will contain the ASCII representation of an integer desig nating the number of times the corresponding site has been called with no suc cess This is used to determine when a node should be marked as down 55 TACCNET Technical Specification November 14 1986 The retry time is the ASCII encoded decimal representation of the last time the corresponding site was successfully contacted if the site appears to be active Otherwise if the site is down or being ret
212. 6 633 Final Technical Report April 28 1987 Appendix 4 TACCNET Data Flow Diagrams The following pages contain the high level data flow diagrams for all of the major systems and subsystems comprising the TACCNET software system A legend is provided at the beginning 96 Legend Module entry and exit points _ Flow of program control Flow of data to from disk files or program modules Command line arguments from user or parent program Program control statements Flow of data to from tables or messages files Flow of data files to from directories queues Special entry and exit points for errors and procedure calls x scan mode read in list of sites to monitor in addition to priority queue system parameter file ee priority get arguments temporary rom user gt message text file destinations command message text path table expand and validate destination paths Se message build a message for icm each destinastion message temporary message text file put messages into message processor Input queue masterq get arguments from user system scan mode command set working parameter directory and operating file debug level parameters read in list of sites to monitor site table gt addition to priority queue messages found check for messages in priority queue
213. 86 Page 20 WriteLog OpenModem Can t set new modem attributes PortName return ERR normal UNIX systems use fcntl to reset O_NDELAY this doesn t work for XENIX systems see caller c if fcntl ModemFd F SETFL fcntl ModemFd F GETFL O 5 O_NDELAY ERR i WriteLog OpenModem Can t turn off 0 NDELAY on PortName return ERR return ModemFd readstr c Oct 30 10 50 1986 Page 21 include net h extern int MaxWait Maximum retry for hangup char ReadStr Str char Str ReadStr will read string from the modem into the space pointed to by String The input will be terminated by a CR or NL character The calling routine must insure the presence of sufficient space at String ReadStr will return a pointer to String if it succeeds or the value NULL if it fails register int register char Ptr NULL char GetStr for n0 lt MaxWait amp amp Ptr NULL Ptr GetStr Str return Ptr char GetStr String char String char Ptr Ptr String point to start of storage do Ptr if Ptr Receive ERR get character from modem return NULL bad return timed out while Ptr amp amp Ptr NL Ptr 0 replace newline or cret with null return String good return pointer to string sethayes c Oct 30 10 50 1986 Page
214. 959 1 4 AN 959 I 4AN 959 1 25 ANBS E 679 001 NO A25 048 005 001 006 013 014 AQ 001 001 006 013 014 A0 001 02 01 006 013 014 A04 001 DD 861 ANAC 00 008 V S22V MESSAGE NUMBER TITLE 81 7 MESSAGE 5006 CASUALTY INFORMATION REPORT CASSTATS 12345678901 2345678901234 5678901 23456789012345678901 2345678901 23456789 EXER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1 XXXXXXXXXXXXXXXA 2 OPER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX e J XXXXXXXXXXXXXKXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX 3 4 MSGIO CASSTATS XXXXXXXXXXXXXXXXXXXX WNNHNNN AAA AAA NNN 2 3 4 5 6 NNNNNNN AXNXX REF A XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX NNNNNNABAAANH NNNNNHN 12 3 4 5 XXXXXXXXXXXXXXXXXXXX NNNHNNN NNNNNNHN AAA NHNNNNA AXNXX NNNNNNABAAANN NNNNNN NNAAANN AAAAA AAA 6 7 AMPH NARR PAGE 1 OF 2 7861 JINAC 00 00S V 322V MESSAGE LITBE Ode NUMRER 5006 CASUALTY INFORMATION REPORT CASSTATS SCT IDENT KDTGRPTN wKUNITCAS SKCASLTY SKNOSCAS RMKS DWNGRADE M M M M M M M M gt oe o FIELD NO Cn con amp WA D 6 Por anon MANDATORY ENTRY FLD DESC COL ACTKIA ACTWIA ACTMIA ACTNBC CTPERS MILPERCL ACT
215. AL Ge lest NOS Nee ace A cco oe woe Ss OE Sek SU adu delcsdhode 5 ER ER EC ix ade T EShOdB cots hen ue e dee sca Re d Table of Contents Thu Oct 30 10 51 48 1986 del ILSE UY delOlist DES PE o du bu SN 47 i SERVA ee Eee Ey dellnode jg vue uas HO File scr c Page 50 wget string 4 50 wgetchar 5 readstr Vac UA an a 51 print imsg Q 52 print_cMSg Ter Tree Cee S NR ee 52 wget field eceevvecovoccs CETT 52 handl r 26 vital M m 54 File util c Page 56 COUN phuc ds Vu sd add ei os 56 pehar obe xev eased caress 56 eae TEN 56 bl sup ENTE T 57 bl pad 444 v 5 bl pad o XU eae Sy ENIM e wens 58 Makefile Oct 30 10 51 1986 PATH bin usr bin usr unify bin clean rm f jms o jms jms h jms o dsp o form oN list o scr o util o uld jms jms o dsp o form o list o scr o util o lcurses ltermcap In jms bin jms o jms c jms h ucc c Mm j
216. C database were installed and validated by testing A draft outline for the TACCNET technical specification was prepared We decided to obtain a copy of the JINTACCS handbook which would allow us to put more messages into the system ap us TACCNET G36 633 Final Technical Report April 28 1987 We acquired a Kurzweil Voice System machine which capable of voice recogni tion with a 1000 word vocabulary We considered ways to incorporate this machine into the research using voice recognition software to build JINTACCS messages We discovered that the Honeywell DPS 6 does not allow timeouts during read operations Some rewriting of the code was required to allow for this Other problems related to the configuration of ports were recorded The system required some modification of UNIX based code to handle special timeout DEL and BEL situations arising from GCOS limitations on asynchronous reads and writes These changes were bracketed by ifdef statements in the C code so that they are compiled only as needed We became aware of a software product developed by Consultant s Choice Inc which purported to be able to read and parse JINTACCS messages Arrange ments were made to investigate the product and evaluate its suitability for use in the CSSCS environment A presentation by representatives was held at the AIRMICS office A decision was made to examine the system further and to solicit sources for JINTA CCS message processin
217. CCNET source code to the Honeywell DPS 6 and port to GCOS Design a database backup and recovery system for TACCNET Develop a screen oriented editing interface for the JINTACCS message composition tool Personnel Alton P Jens n is 9439 3 9 project administration William Putnam project management and design steven 1 system design and development oninmn Hong 394334033 ae a 9 7 research assistant There are two professional researchers involved with the project Bill Putnam works full time as project manager and chief software designer Alton P Jensen works one quarter time as project administrator There are two students working part time on this project They carry work loads ranging from 12 to 20 hours per week depen ding on availability The hours spent on the project are classified and allocated into five categories breakdown of labor for the period is given below Category Hours Administration 70 Planning amp Design 100 Prototyping amp Testing 40 Programming amp Debugging 50 Documentation amp Reporting 20 Total 470 Expenses Expenses for the period were solely in the category of salaries Salaries of professional research personnel are clas sified as Professional Expenses Salaries of student assistants are classified as Staff Expenses A breakdown is given below Professional Expenses 5 4 500 00 Staff Expenses 5 400 00 Total Expenses 4 900 00 Wo
218. CKD DIAL VALIDS PUTSIT OPENMO STATE HANGUP WRITEL FRENAM LOCK UNLOCK RDSITE DATETI LOGIN MYNAME FILEOP PORTS EOF ZSYS72 gt UDD gt GOLDBERG gt UNIX gt CALLER LN 1987 02 12 1738 07 7 PATH TIME IOCONT CHECKS GETBLO GETFIL PREEMP SEND SENDBL SENDBY SENDEN SENDNA SENDFI SENDPA WAITAC ARCHIV WAITNA FILENQ MOVMEM WAITEN DEQUEU WRITEL DATETI VALIDS MYNAME READDI LOCK UNLOCK RDSITE FILEOP SETPOR REMOVE CREATE SENDHE GETHEA EOF ZSYS72 gt UDD gt GOLDBERG gt UNIX gt IOCONT LN 1987 02 12 1738 40 0 PATH TIME GENMSG VALIDS VALIDP MYNAME FILENQ WRITEL DATETI NEWFIL FILEOP LOCK UNLOCK READSI STRIPM EOF ZS S72 gt UDD gt GOLDBERG gt UNLX gt GENMSG LN 1987 02 12 1738 25 5 Common Functions This section contains common functions used by many different programs and functions in the TACCNET system If the source code for a function is not given in the separate program list ings it will be in this section PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt DATETI C TIME 1987 02 12 1601 26 1 finclude net h int DateTime Str char Str long BDate BDate time long 0 sprintf Str Zs ctime amp BDate Str strlen Str 1 7407 Zap NL placed by TIME 2 return 0 EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt DATETM C TIME 1987 02 12 1601 59 3 include net h int DateTime Str char Str long BDat
219. COM Message Format Standards JUNE 84 5 52 3 COM Message Format Standards JUNE 84 Supplement 1 JINTACCS Technical Interface Design Final Edition Appendix E Character Oriented Message Text Rules JINTACCS Message Standards Catalog of Keyword Data Sets Lr Parts 1 2 Reissue 5 JINTACCS Message Element Dicticnary MED Parts 1 2 4 Reissue 5 Appendix A Data Field Icentifier Stardards Reissue 1 Appendix E Character riented Message Text Formatting Rules Reissue 1 JUNE 84 84 DEC 84 DcD 84 SCENARIO I Scenaria I uses the ACCS message 5046 Casualty Irfermation Repert CSS C2 Information Unit 12081 FERSITREP The force level interface documentation snows this message Seing transmitted ta CSS by ADA IEW and FS There is requirement fron MCS The CSS Ce information Requirements shows this message as being sent to Gi AS and by the units These two usages are conpatible The messaces will originate at the DISCOM SFO This manual origination is consistent with the interim system that uses a remote interface Data ertry is initiated threuph the keyboard the TACCS Data entry need not in JINTACCS format c The SP places the cata in its internal data Base 5 The SPO sends the message in JINTACCS format to the AG 4 The AG places the data in its internal cata base An on line marual query verifies the arrival storage of the data
220. CSS and the usage of JINTACCS messages for CSS functions we cannot determine what the hierar chy and therefore the ordering of alternate sites should be There is also the question of how many alternate sites to put on the list Should the chain stop at some point or should it continue all the way up the CSS chain of command What is to be done with a message when no alternate sites are available 3 2 Routing We have already discussed the issues surrounding the topology of a CSSCS net work Regardless of the type of network proposed it must be able to route message efficiently and automatically through the network The user should be relieved of the details of selecting path and should only need to know the desired destination of his message In the case of routine or automated reports and queries the system should keep track of message origins and destinations leaving the operator responsible only for message composition or auditing Due to the dynamic nature of the CSSCS network environment there are advantages to implementing a store and forward message passing system imas TACCNET G36 633 Final Technical Report April 28 1987 When a message cannot be delivered directly to the desired site it can be routed through and intermediate site which may have an active link to the desired site Messages labeled for unknown destinations could be passed on to a designated post office site responsible for maintaining a complete
221. Calls MaxCalls 1 RSite gt TimeToCall NOW DownDelay PutSite RSite save entry amp release storage WriteLog CheckDown RSite gt SiteName is down return TRUE else RSite gt NumCalls lt MaxCalls means try again later RSite gt Status RETRY declare the site delayed RSite gt TimeToCall NOW RetryDelay WriteLog CheckDown RSite gt SiteName temporarily down PutSite RSite save entry amp release storage return FALSE 9 dial c Oct 30 10 50 1986 Page finclude net h extern int ModemFd extern int DebugLevel Runtime debug level 0 normal int Dial Sitelnfo site Sitelnfo char TelNums 20 i char DialCmd 50 char Answer 10 register int i20 Using Hayes Modem Minimal Code FlushModem nput ModemFd write ModemFd ATTENTION strien ATTENTION if ReadStr Answer NULL modem never answered WriteLog Dial modem does not respond can t dial t return ERR don t count as failure problem at this end if EQUALS Answer ZERO WriteLog Dial modem answered Answer to AT command fk try calling each listed number for the site until one succeeds for i 0 Si tel nfo PhoneNum i 1 O s 1 give the dial command and see what happens sprintf DialCmd Xs sWXr DIALSTR Sitelnfo PhoneNum i if DebugLevel WriteLog Dial dialing
222. Command file db ptloc s ptloc sp gt dev null 2 gt gt dev null DBLOAD OATAFILE system Command Cannot check error conditions simply WriteLog PostPOL Command FAILED WriteLog PostPOL unable to update ptloc data return ERR postpol c Oct 30 10 52 1986 Page 17 Process CLTHRE set if fscanf MsgFd 55 SetName EOF WriteLog PostPOL POLLOC message missing 3KCLTHRE set return ERR SkipEOL MsgFd if EQUALS SetName 3KCLTHRE WriteLog PostPOL cannot find 3KCLTHRE set return ERR SkipEOL MsgFd Skip header line DataFp fopen WORKFILE w Create a new data file while LastLine Process all lines in second columnar set CLTHRE Result fscanf MsgFd c 2d 1 5 5 5 5 Elndex QtyType 0 QtyType 1 QtyType 2 Remainder if Result EOF WriteLog PostPOL POLLOC message incomplete fclose DataFp return ERR SkipEOL RemLen strlen Remainder Compute length of string if Remainder RemLen 1 amp amp Remainder RemLen 2 LastLine TRUE This is the last line if PtName Index l NULL Check for bad index WriteLog PostPOL descriptor matches no location in 3KCLTHRE set 9 fclose DataFp return ERR for i20 i lt 3 i P
223. CurTier 1 return 0 Last item must be quit return CurTier 10 CurSel 1 case 0 return 0 case case 12 case 3 case 4 case 5 case 6 case 7 case 8 case 9 CurSel c int O 1 return CurTier 10 CurSel 1 default return 1 return 1 StopMenu return 1 initwindow c Oct 30 10 51 1986 Page 28 include console h extern int NeedRead Global flag indicating need to read config file extern char CFileName 80 Global configuration file name extern int AskUser Flag saying to ask user to start system if down extern int AutoConfig Flag indicating auto load of previous config extern int CurScreen InitWindow configure curses and initialize main screen reading menu information and presenting menu line on bottom of screen Menu is not window to this system but rather part of main screen void InitWindow i FILE MenuFp File descriptor for menu file int i 1 char Temp 5 if MenuFp MENUFILE r NULL i fprintf stderr Ss cannot open menu fileXn SysName exit 1 for j 0 j lt 2 j fscanf MenuFp amp MenuSize j Get number entries in file if MenuSize j gt MAXOPTIONS i fprintf stderr too many entries in menu file n SysName exit 1 for i 0 i lt MenuSize j i fsc
224. DFd UNITID file descriptor char RetPtr Pointer to return to caller if Uni tI DFd fopen UNITID r NULL i fprintf stderr UnitlD don t know my own return char NULL Try to recover fscanf UnitlIDFd Ss TempSiteName Get this site s name fclose Uni tI DFd RetPtr malloc strlen TempSiteName 1 Get perm storage strcpy RetPtr TempSiteName return RetPtr JMS This section contains the functions used only by the screen oriented JINTACCS message preparation program JMS Table of Contents Thu Oct 30 10 51 48 1986 File Makefile Page File jms e Page 2 Files jms h Page 3 File dsp c Page 7 addscr 4 4 457 addscr csline 7 addser cSd usd ES ERES puedes 8 addscr lsf UA eer eee 9 10 addscr 1594 11 Waddclif elena ce We BOR wie wees 13 Qu orice ea RC T pie 13 Wplintwf sc a a e 13 File form c Page 15 CONVEr t acids esata s E qa qus TE 15 Nes due OSA 16 dsp lin set 17 convcsflist 17 cobvesd Ust suco eee wan Seats RR ON 44 18 convtsnode Seq d
225. DNO FCAT char KIND char FDFI FDUI char SETID SCAT char int FDNO ams c Oct 30 10 50 1986 int char char char char struct THRU LRJ 2 NOTYP 11 DVAL 21 COMBI 30 char DFI 6 char DUI 4 DFIKEY retrieve NO TYPE from dfis relation and add it to the field strcpy DFIKEY DFI FDF strcpy DFIKEY DUI FDUI if acckey dfis amp DFIKEY fprintf stderr n dfi not found gfield dlrj LRJ LRJ 1 INO gfield dformat NOTYP 10 0 swi tch KIND case case C e gfield dcolhdr CHDR 23 0 add_csf_node bl_sup FNAME b1_sup bl sup SCOL J bl sup LRJ bl sup NOTYP break gfield dfdesc FDESC FDESC 7 0 add 15 node bl _ sup FNAME bl_sup FDESC bl sup LRJ b1_sup NOTYP fprintf stderr Nn enter gt FNAME scanf X Xn S c DVAL 20 0 THRU FALSE whi THRU if EQUALS SETID MSGID amp amp FDNO 1 strcpy ALIAS upstr DVAL while msg bl pad ALIAS 10 i Page 17 fprintf stderr Nn WARNING ILLEGAL message type fprintf stderr Nn Reenter 45 gt FNAME scanf 3 Nn c DVAL 201 7506 strcpy ALIAS upstr DVAL gfield mno MNO NO gfield mtitle TITLE TITLE 30 0
226. ELD handler C SETID wrefresh main win wclear msg win wrefresh msg win Free Text Set Manager Level 1 FSET mgr SETID CAT char X SETID char X CAT i wclear main win wprintw main win SET ID s SETID wrefresh main win addInode F CAT SETID freef handler wclear msg win wrefresh msg win Linear Set Manager Leve LSET mgr SETID char SETID char XCAT if EQUALS O R for 33 wclear main win wmove main win 0 0 29 ims c Det 30 10 51 1986 Page 30 wprintw main win SET ID sNn SETID wrefresh main win addlnode L CAT SETID FIELD handler L SETID if SET STDPPER i SET STDPPER FALSE break else wclear main win wmove main 0 0 wprintw main win SET ID s SETID wrefresh main win addlnode L CAT SETID FIELD handler L SETID wclear msg win wrefresh msg win FIELD Handler Field Level or Level 2 f ae T AAAA AAAA A A AAAA FIELD handler STYP SETID char STYP char SETID char DFIL 6 data field identifier char DUI 4 data usage identifier char 4 cat struct char SID 8 int FLDKEY retrieve each field id in the order of field no add field node strncpy FLDKEY SID 51 pad SETID 8 8 for FLDKEY FNO 1 acckey field amp FLDKEY 0 FLDKEY FNO
227. ES PCR 14 File emdprompt c Page 15 CmdPrompt 4 vv ac en rc 15 File console c Page 17 mar s vvv Xe sdb wie a ee 17 ExitProcessor CERRAR ee re RE 18 File dispfile c Page 19 DISDE VS uova ra RA SRI wee ooh a o 19 File dispqueue c 20 DI SPOUCUC aaa xo Res ROC OA NUR 20 File expand c Page 22 EXBanq E E o ee ee ee ee 22 Files getconf c Page 23 GetConf Ne Gta Reece een File getdir c Page 24 GetDir 99 9 8 9 E 9 E 9 9 9 9 9 9 9 9 9 9 9 9 9 24 SOP vx EC VS snes 25 File getmenu c Page 26 GO oos swt RU EA eee ees 26 StopMenu TIT e 27 Files initwindow c Page 28 Int tWindow 28 Table of Contents Thu Oct 30 10 51 19 1986 File lastlines c Page 30 LastLines 9 9 9 O 9 O0 f o6 O0 O6 O6 9 30 File newsys c 31 NewSys 31 File open c Page 32 ODEN 32 File perform c Page 34 Perform cite era ERO oU MR eee ane 24 File printborder c 36 PrintBorder 36 Files printmenu c
228. ETABLE return ERR search the site table and copy the site entry to the pipe for c getc SiteFd c EOF amp amp lFound c getc SiteFd i fscanf SiteFd s SiteName if EQUALS SiteName Target Found TRUE this will get us out of the loop fprintf PipeFd c s c SiteName copy first fields while c2getc SiteFd FIELDMARK copy the rest of the data putc c PipeFd else while SiteFd FIELDMARK amp amp c DELCHAR SkipEOL SiteFd skip to the next site entry if Found tell requestor that the site is not defined on this node fprintf PipeFd Site s is not defined at node Target ThisName free ThisName fclose SiteFd UnLock SITETABLE if pose PipeFd 0 WriteLog ExamineSite error executing Command return ERR if Found WriteLog ExamineSite a copy of site Target has been sent to Destination else WriteLog ExamineSite Target not defined negative response sent to Destination return GOOD forward c 0 30 10 51 1986 Page 13 include net h Forward Put a new header on the current message directing it to the chosen alternate site Leave the message in MSGPROCQ for disposition int Forward MsgFileFd NewPath MsgPriority FILE MsgF i leFd si tename NewPath int MsgPriority i FILE NewFileFd New m
229. End of text flag needed for getblock int BlockLength Length of block message name returned if ResponseBlock GetBlock amp BlockLength amp Endflag NULL if BlockLength EOT Unexpected condition no error handling here GetHeader message header received improperly 9 Exit BADCONNECTION Synchronization bad between messages else return Remote had no more files to transmit if BlockLength gt FILENAMELEN Don t permit overindexing f Remote message name is not of proper form WriteLog GetHeader message name is invalid free ResponseBlock Exit BADCONNECT ON Check message name against records not implemented now strncpy messagename ResponseBlock BlockLength set return text messagename BlockLength 150 Check for need to abort either from preemption or shutdown if Preemption QueueName WriteLog GetHeader INTERRUPTED while receiving messagename SendByte EOT Remote will understand Exit INTERRUPTED if MasterMode amp amp Abort WriteLog GetHeader ABORTED while receiving messagename SendByte CAN Remote will know we are aborting ShutDown 0 Don t do anything else getheader c Oct 30 10 51 1986 SendByte ACK Transmit file acceptance ACKnowledge FlushModeminput ModemFd free ResponseBlock r
230. FORHONEY sendfile c cp sendfile o sendfileh o mv sendfile o sendfile o sendpacket o sendpacket c iocontrol h 0 c sendpacket c waitack o waitack c iocontrol h cc 0 c waitack c Makefile Oct 30 10 51 1986 waitname o waitname c iocontrol h 0 c waitname c movmem o movmem c 0 c movmem c wai tenq o waitenq c iocontrol h 0 c wai tenq c setporth o setport c mv setport o setport o cc c 0 DFORHONEY setport c cp setport o setporth o mv setport o setport o setport o setport c cc c 0 setport c createfile o createfile c cc 0 c createfile c sendheader o sendheader c cc 0 c sendheader c getheader o getheader c cc 0 c getheader c touchsite o touchsite c 0 c touchsite c waitbeep o wai tbeep c cc 0 c waitbeep c exit o exit c cc 0 c exit c iocontroldb iocontroldb c cc 0 iocontroldb iocontroldb c iocontrolhdb iocontrolhdb c cc 0 o iocontrolhdb iocontrolhdb c Page 3 checksum c Oct 30 10 51 1986 Page finclude lt stdio h gt CheckSum compute a l6 bit checksum of length bytes starting at data int CheckSum data max unsigned char data int int i long Result Storage for temporary result Result 0 for i 20 i lt max i ifdef FORHONEY if data i unsigned char i if mos unsigned char Result int 11 i Skip second backslash in
231. G PROTOCOL PROTOCOL SEND C AS OP D PROTOCOL DBG D D D D D D p D D D D D D D D D D PROTOCOL PROTOCOL PROTOCOL DBG PROTOCOL PROTOCOL PROTOCOL PROTOCOL DBG PROTOCOL DBG PROTOCOL PROTOCOL DBG PROTOCOL PROTOCOL DBG PROTOCOL PROTOCOL PROTOCOL_DBG PROTOCOL DBG PROTOCOL PROTOCOL LOCK C AS OP D PROTOCOL DBG AS OP CHECKS C AS OP GETBLO C AS OP GETFIL C AS OP GETPAC C AS OP PREEMP C AS OP RECEIV C AS OP SENDBL C AS OP SENDBY C AS SENDEN C AS OP SENDNA C AS SENDFI C AS OP SENDPA C AS OP WAITAC C AS OP ARCHIV C AS WAITNA C AS OP FILENQ C AS MOVMEM C AS OP WAITEN C AS 0P DEQUEU C AS 0P WRITEL C AS 0P DATETI C AS 0P VALIDS C AS 0P MYNAME C AS 0P READDI C AS UNLOCK C AS 0P RDSITE C AS 0P FILEOP C AS 0P SETPOR C AS 0P REMOVE C AS 0P CREATE C AS 0P SENDHE C AS 0P GETHEA C AS 0P D D D D D D D D PROTOCOL DBG PROTOCOL DBG PROTOCOL PROTOCOL DBG PROTOCOL DBG PROTOCOL DBG PROTOCOL DBG PROTOCOL DBG PATH TIME M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M4 CC M
232. GEORGIA INSTITUTE OF TECHNOLOGY OFFICE OF CONTRACT ADMINISTRATION PROJECT ADMINISTRATION DATA SHEET ORIGINAL REVISION NO Project 36 633 6039 0 0 DATE 10 9 85 A P Jensen Project Director ICS Sponsor U S Army Information Systems Selection amp Acquisition Activity Ft Belvoir VA Type Agreement Contract 06 85 0012 Award Period From 9 13 85 To I 12 86 Performance 3 12 86 Reports Sponsor Amount This Change Total to Date Estimated 173 284 173 284 Funded 173 284 173 284 Cost Sharing Amount 5 None Cost Sharing No N A Combat Service support Systems Advanced Experimental Demonstrations AED ADMINISTRATIVE DATA Contact William Brown X4820 1 Sponsor Technical Contact 2 Sponsor Admin Contractual Matters Glenn Racine Celestine Holly AIRMICS U S Army Information Systems 115 O Keefe Building Selection and Acquisition Activity Georgia Institute of Technology Attn ASW MSC Stop C 40 Atlanta GA 30332 0800 Ft Belvoir VA 22060 5456 894 3107 703 664 6311 Defense Priority Rating A70 Military Security Classification N A or Company tndustrial Proprietary N A RESTRICTIONS See Attached Gov t Supplemental Information Sheet for Additional Requirements Travel Foreign travel must have prior approval Contact OCA in each case Domestic travel requires sponsor approval where total will exceed grea
233. GPROCQ WriteLog MsgProc normal termination exit GOOD int usage Name char Name fprintf stderr usage s directory Name exit ERR void ShutDown WriteLog ShutDown operator requested system shutdown UnLock MSGPROCQ exit 0 process c Oct 30 10 52 1986 Page finclude net h extern int DebugLevel Runtime debug level 0 normal extern pathname Logfile Name of system log int Process MsgFi le char MsgFile FILE Fd char Priority LINELEN 1 char Path LINELEN 1 char FuliPath LINELEN 1 sitename FirstSite sitename NextSite char NewPath pathname FileName pathname Queue int FixPath int Type MESSAGETYPE FILE MsgFileFd register int c char ThisName Pointer to storage for name of this system site SiteEntry ThisName MyName Get site s name open the message file for reading if Fd FileOpen MsgFile MSGPROCQ NULL f x WriteLog Process can t MsgFile OMS return ERR if DebugLevel WriteLog Process processing file MsgFile 14 get message header components for processing GetLine Priority Fd GetLine Path Fd GetLine FullPath Fd if DebugLevel WriteLog 5 path is Path get first site from path and set new path to remainder NewPath StripMe 1 Fir
234. I Ud 20 is last line ET 20 File jms c Page 22 main T ee eee Te ee ee ST ee ee ee ee le command handler M 2h command saeua eo Sd RA EG RE CR ap es a gia ace reve 24 create JIN msg 4 4 4 27 SET 4 cx v e Lad ee aaa eee 28 CSET Wig 28 mgl 4 2 tuv rm 29 ESET MOF 29 FIELD handler 4 30 DFI S 31 freef handler 32 readtxt CP 93 VALE cuins ap eed Macc adita ee ee da 34 Frane duce are ds PU dod da 3h header 4iv254 sss 35 FOOTNOTE oe Seca 2 oe 35 35 File list c Page 37 addQnode TP i a ane aei 37 add NOG EG NE a PC PRU SIS 38 add Ts node cse da RR des 38 add CSE HOdB 39 add csd 9a SERIE Ee qoe ae HERE IE RET 40 add ts pao RES dis eiua Sand e MUR 42 pars 85 PE epe exe 42 delisnode c aU 13 M ied T GEESE dts we aha os
235. ILE Fd FILE MsgF i leFd filename MsgF eName register int Ch char ThisName Pointer to name of this system ThisName MyName 0 Get this site s name create a message file to hold the message if MsgFileFd NewFile MsgFileName MESSAGETYPE MSGPROCQ NULL i fprintf stderr GenMsg Can t create MsgFileName return FALSE write the message header into the message file fprintf MsgFileFd gt gt gt Priority Path ThisName free ThisName rewind Fd rewind the message text while Ch getc Fd EOF copy the message text pute Ch MsgFileFd fclose MsgFileFd FileNQ MsgFileNametl MSGPROCQ put message in proper system queue return TRUE E genmsg c Oct 30 10 51 1986 Page This function will build a network path to the site given in Si teName The Si teName may be a path alias an absolute path or an alias with an absolute path appended Return value will be a pointer to the constructed path or NULL if the path was invalid char BuildPath SiteName char 5 teName char RetVal pathname DestPath pathname Path sitename FirstSite validate or expand the first site on the path if possible sscanf SiteName S FirstSite strip first site if ValidSite FirstSite NULL undefined site if ValidPath FirstSite Path expand path alias sprintf De
236. IOControl system 95 Caller 80 GenMsg 5 Integration with TACCNET 40 Work for Task 2 55 Technical Specification 5 Performance and Cost Report Contract Number DAHC06 85 C 0012 Project Number G 36 633 Georgia Institute of Technology April 1 1986 to April 30 1986 Overview Development proceeds on the message processor routines to recover JINTACCS messages from site archives These messages will be re queued for transmission to a specified site for used in reconstituting that site s C2 database Functions for the regular backup and recovery of the C2 database are installed and have been validated by testing A draft outline for the TACCNET technical specification has been prepared The spec is supposed to conform to MIL SPEC 490 It was discovered that MIL SPEC 490 has been superceded by 490A MIL SPEC 490A references documents not available airmics These documents will be located and provided asap We are attempting to obtain a copy of the JINTACCS handbook which would allow us to put more messages into the system Glenn will try to get the book for us We have available a Kurzweil Voice System machine which can do voice recognition with a 1000 word maximum vocabulary We are considering ways to incorporate this machine into the research using voice recognition software to build JINTACCS messages Steve reports that the Honeywell does not allow timeouts during read operations Some rewriting of the code is required to all
237. Imt DestPath Priority 5 makecas c Oct 30 10 52 1986 Page include net h include server h int MakeCAS Datafp Unitid FILE DataFp char Unitid i WriteLog 5 don t know how to CASSTATS for Unitid return ERR makepol c Oct 30 10 52 1986 Page define ENDQUERY include net h include server h MakePOL build an input file for AMS to create a POLLOC message int MakePOL DataFp FILE DataFp FILE WorkFp char Command 80 int Index int Lastindex 0 char Ptloc 20 assume maximum of 20 POL locations char Name 27 char Location 21 char FOL long int Quantity char Unit 4 char Type 7 char QtyUnitType 20 Combined quantity unit and type char Fuel 201 assume at most 20 types of fuel char 011 20 20 types of oi char Lube 20 20 types of lubricant char Ptr Temporary pointer char Dash 2 Filler character for empty slots int MaxLines 0 Total number of lines used for current index int c int i write DTGM set to work file for AMS PutDTGM DataFp execute database query for POLLOC put results in file for processing sprintf Command Xs s gt 5 2 dev null SQL POLLOC WORKFILE system Command WriteLog MakePOL database query failed u return ERR ox if WorkFp fopen WORKFI
238. JINTA CCS messages for Combat Service Support units These messages are to be generated from and posted to the Command and Control database It is desirable to minimize human intervention in the processing of these messages The Data base Server server manages the interface between the TACCNET message sys tem and the C database The Database Server in the TACCNET prototype uses the UNIFY relational database management system which must be installed according to the manufacturer s instructions before the server can operate The server program examines messages in its input queue and updates the c database or generates response messages as needed Its input queue is the directory named server in the TACCNET master queue usually usr taccnet Messages addressed to site server are placed in this queue by msgproc when they reach the final site in the destination path The server examines this queue periodically for new messages to process Messages must be in JINTACCS for mat with a valid TACCNET header JINTACCS messages may be either update messages or request messages An update message contains data to be placed C database A request message causes the server to get data from the database and generate the requested message addressed to the originator of ihe request 4 2 4 1 The Message System lhe primary purpose of the message system is to allow a user to create mes sages in JINTA CCS format manually or automatic
239. JINTACCS message and send the response message to the unit which gen erated the request Report messages are those which contain data to be placed into the C data base A report message may contain a full report of the status of some item or unit or it may contain update information for certain elements of a unit At this time it is not clear how to use the update feature of JINTACCS messages and all incoming report messages are regarded as full status reports overwriting existing information in the database 3 2 3 2 Database Access From Programs In order for the system to access the information in the database it must be able to formulate and execute queries in the database query language It is pos sible to write queries and store them in files for use by the server This is the method employed by the prototype TACCNET system If the database manage ment system used for the C database provides an embedded query language facility for use with the development language of the server system a number of operations can be carried out more efficiently than with stored queries A message dictionary can be built in the DBMS for use by the server in format ting information into JINTACCS messages The embedded query language makes it possible to retrieve information about the message structure from the message dictionary in simple and logical manner The embedded query language also allows database query and update operations to be designed
240. KIA ACTYIA ACTHIA CTPERS SC MOS 5 05 ACTKIA ACTWIA ACTMIA ACTNBC CTPERS MESSAGE CONTENT ss ss us OUT P 4e f FIELD NAME AS OF DATE TIME REPORT SERIAL NUMBER UNIT IDENTIFICATION UNIT IDENTIFICATION ACTUAL KIA ACTUAL WIA ACTUAL MIA ACTUAL NON BATTLE CASUALTIES COUNT OF PERSONNEL MILITARY PERSONNEL CLASS ACTUAL KIA ACTUAL WIA ACTUAL ACTUAL NON BATTLE CASUALTIES COUNT OF PERSONNEL SPECIALTY SKILL IDENTIFIER MILITARY OCCUPATIONAL SPECIALTY ACTUAL KIA ACTUAL WIA ACTUAL MIA ACTUAL NON NATTLE CASUALTIES COUNT OF PERSONNEL DOWNGRADING AND DECLASSIFICATION MARKINGS START COL J eL iR 25R 320 39R 2L 2L 11R 15 258 328 39R PAGE 2 OF 2 NO TYPE NO 6 N C 914 6 AN 487 l 24 ANBS E 987 6 21 ANS 095 1 4 959 l 959 l 4AN 959 j AAN 959 l 4AN 959 1A E 168 l 4AN E 959 l 4AN 959 l 4AN 959 l 959 l 4AN 959 4027 5 AN 4027 l 4 959 l 4 959 l 4 959 1 4 AN 959 I 4AN 959 1 25 ANBS E 679 001 NO A25 048 005 001 006 013 014 AQ 001 001 006 013 014 A0 001 02 01 006 013 014 A04 001 DD 861 ANAC 00 008 V S22V MESSAGE NUMBER TITLE t 68 MESSAGE ow WE vm Gb OUR UB S006 CASUALTY INFORMATION REPORT 12345678901234567890
241. L i char SiteList char TempB f LINELEN T sitename Site FILE Si teTableFd register int c NumSites i 0 if Lock SITETABLE ERR i WriteLog GetSites Can t lock SITETABLE return NULL if SiteTableFd fopen SITETABLE NULL i WriteLog GetSites Can t open SITETABLE 18 UnLock SITETABLE return NULL indicate failure count the sites so we can malloc for SiteList amp for NumSites 0 czgetc SiteTableFd EOF if c FIELDMARK then this line is a site entry NumS i test SkipEOL SiteTableFd SiteList char malloc NumSites l sizeof char skip down to beginning of first site entry rewind SiteTableFd while c SiteTableFd FIELDMARK SkipEOL SiteTableFd do fscanf SiteTableFd 5s TempBuf get a site name SiteList i malloc strlen TempBuf 1 c SiteList i TempBuf do SkipEOL SiteTableFd goto next entry SiteTableFd while c FIELDMARK amp amp EOF while c EOF SiteList i NULL set end of list marker fclose SiteTableFd UnLock SITETABLE return SiteList 3 getsites c Oct 30 10 52 1986 Page include net h int Interrupt Queue char Queue amp Write an interrupt flag in the named queue to cause the currently running lOControl to terminate
242. LE r NULL i WriteLog MakePOL can t open work file mn return ERR write 3KPOLLOC set to work file for AMS for i20 WorkFp c ENDQUERY i WorkFp Name 0 char c fscanf WorkFp 1 c s Nametl Location blsup Name 7 makepol c Oct 30 10 52 1986 Page 8 Ptloc i malloc strlen Name 1 strcpy Ptloc i Name save POL names for comparison below write the Data Entry number POL Name and POL Location fprintf DataFp 2 1 1 Name Location SkipEOL WorkFp Ptloc i NULL SkipEOL WorkFp Skip to the next line fprintf DataFp End this section the data file write 3KCLTHRE set to work file for AMS strcpy Dash for i20 lt 20 i Initialize slots to empty Fuel i Oil i Lube i Dash for c getc WorkFp c EOF c getc WorkFp 0 char c fscanf WorkFp S c 9 c c c 1d c s Name amp FOL amp Quantity Unit Get data sprintf QtyUnitType 14 5 6 Quantity blsup Unit Type SkipEOL WorkFp Skip to the next line blsup Name suppress trailing blanks for 1 0 i20 Ptloc i NULL i match the ptloc entry if EQUALS Name Ptloc 1i Index 1 1 set the Data Entry value for the POL item if Index 0 We did not fi
243. LL The file was not found or else we have a bad problem Say return FALSE Indicate no need to relinquish line fclose fp Make sure we close the file return TRUE Indicate that we have agreed to terminate send c Oct 30 10 51 1986 Page 27 include net h include iocontrol h include iocontrol e Send output a packet to the output device ModemFd Do not make any assumptions about format permit binary if needed Place an EM End of Message followed by an ASCII carriage return CR after the packet as part of the low level protocol int Send string length unsigned char string String of characters to send may be binary int length Length of string to send in bytes unsigned char Tail 3 ifdef FORHONEY register int i register int j 0 unsigned char newstr newstr unsigned char malloc length 2 for i20 i lt length i if string i unsigned char string i unsigned char r newstr j unsigned char j string i Check to see if Honeywell is ready for entire packet by sending just the first character and checking for BEEP FlushModemlnput ModemFd Clear input buffer before sending write ModemFd newstr 1 Output the first character to Honeywell while WaitBeep 1 Wait one second for a beep Remote system was not ready keep trying sleep
244. LLER SiteName PortName DebugLevel else sprintf Caller s s Xs 5 5 BIN CALLER SiteName PortName start a Caller for the given Site on the desired Port if Result system Caller GOOD sprintf Response d Result WriteLog Schedule system call returned Response FreePort PortName free up the port return ERR schedule c Oct 30 10 52 1986 Page 14 if DebugLevel WriteLog Schedule loaded Caller SiteName PortName return GOOD CALLER This section contains the functions used only by the Caller program CALLER Table of Contents Thu Oct 30 10 50 36 1986 File Makefile Page File params e i Page 2 File caller c Page 3 main E EE E E E E ES 8 Release 8 SHUTDOWN es a v wie ew ais buda Pea 8 File checkdown c 9 CheckDown 9 Files dial c Page 10 Dial 45 4 REOR ead ae hoe os 10 File endswi th c Page 12 EndsWi th 9 9 9 9 99 99 9 S 999 9 9 9 5 amp 8 9 9 9 9 12 File errmsg c Page 13 ErrMsg o 9 6 9 e 9 9 9 6 9 9 13 File getprompt c Page 14 GetPrompt E DT m S das 14 File hangup c Page 15 e ee RO 15 File login c Page 16 Lo
245. Message Database dictionary Furthermore the whole DBMS may be substituted for another new DBMS by changing only the code of database manager embedded in the message handling module m vam TACCNET Technical Specification November 14 1986 Use of a multi level linked list as the data structure for message storage pro vides flexibility It maintains the message data dynamically during the editing process in screen oriented fashion The lists have double links between nodes both horizontally and vertically i e they have double links between nodes in the same level as well as between the parent node and the child nodes in two different levels The intra level doubly linked list is capable of any kind of modification i e insert delete and update within the list while the inter level doubly linked lists allow modification of the parent node for any child node and vice versa Also the C programming language is well suited to the implemen tation of multi level linked lists especially when many pointers are employed 58 TACCNET Technical Specification November 14 1986 4 3 TACCNET Installation and Operation This chapter details the steps necessary to install the programs and data files associated with the TACCNET software and to maintain and operate the system once installed The first section entitled Installation and Configuration explains the steps necessary to bring a new computer into the network The second secti
246. ModemFd CR 1 sleep 4 FlushModem nput ModemFd for i 0 i lt strien Name i i toupper 1 for 0 i lt strlen Password i Password i toupper Password i sprintf Command s r GCOSLOGIN write ModemFd Command strlen Command username sleep 4 Wait for Password prompt sprintf Command s r Password write ModemFd Command strlen Command password Assume good connection at this point return GOOD case UNIX lOControl is the default shell if DebugLevel WriteLog Login system is UNIX m sprintf Command Ss r Name build username response FlushModemi nput ModemF d write ModemFd CR 1 refresh login prompt State WANTLOGIN initial state do switch State case WANTLOGIN PromptStr GetPrompt get login prompt if EndsWith UNIXLOGIN PromptStr State GOTLOGIN else i Count increment retry count write ModemFd CR 1 refresh login prompt if DebugLevel WriteLog Login wanted UNIXLOGIN got PromptStr case GOTLOGIN write ModemFd Command strlen Command send it State WANTPASSWORD if DebugLevel WriteLog Login sent login Command break case WANTPASSWORD PromptStr GetPrompt get password prompt login c Oct 30 10 50 1986
247. MsgName char Unit d char FILE Fp char 80 register int NumFields if Fp fopen DATAFILE w4 NULL WriteLog StartMsg can t create DATAFILE 1 return NULL write data for EXER or OPER set if present if strlen Imt Q sscanf Imt Text get first token Imt Imt strlen Text 1 advance string pointer fprintf Fp s n Text if EQUALS Text EXER set loop variable to of fields in set NumFields 2 else OPER set NumFields 4 while NumFields gt 0 amp amp sscanf Imt 4 Text 1 Imt Imt strlen Text 1 advance string pointer fprintf s n Text write token to datafile while NumFields gt 0 fprintf Fp dash means empty field else fprintf Fp dash means empty set write data for MSGID set fprintf Fp MsgName Unit d write data for REF AMPN and NARR sets al empty fprintf Fp empty REF set fprintf Fp empty set fprintf Fp empty MARR set fflush Fp return unitid c Oct 30 10 52 1986 Page 30 include net h include server h UnitiD Return the name of this unit found in the file char UnitID 0 i sitename TempSi teName Temporary storage for site name FILE Unitl
248. NGENG uisa nieces nd a wee ERES 31 File sendfile c Page 32 SEnOF ee S POP 32 File sendheader c Page 35 S ndHead amp P 43 2949 92 baw 9 RR EE raa e 35 Table of Contents Thu Oct 30 10 51 37 1986 File sendname c Page 36 SendName 5 meds File sendpacket c Page 37 SendPacket gavisi de WR Rp idis Maas 227 File setport c Page 39 SetPort 39 File touchsite c Page 4 TOUCH OS TTE uude c ise aces Ss 4i File waitack c Page 42 42 File waitbeep c Page 43 WaitBeep Vara acu V auci aeu eoa aru 43 StODF8ad 43 File wai tenq c 44 TENG idu que idis qb n File waitname c Page 45 Wa EN EMG ee RS EI EE 45 Makefile Oct 30 10 51 1986 Page 1 iocontrol iocontrol o checksum o getblock o getfile o getpacket o preemption o N receive o send o sendblock o sendbyte o sendenq o sendname o sendfile o sendpacket o waitack o archive o waitname o filenq o movmem o wai tenq o dequeue o writelog o datetime o validsite o myname o getdir o lockfile o readsite o fileopen o setport o remove o createfile o N sendheader o getheader o touchsite o putsite o abort o exit o cc 0 o iocontrol iocontrol o
249. NTs of a message from the level 1 list delllist ptr listl ptrl if ptrl next NULL delllist ptr1l gt next dellnode ptr1 Delete all the messages from the linked lists delOlist ptr10 listO ptrlO if ptr10 gt next NULL delOlist ptr10 gt next 26 del c Oct 30 10 50 1986 bags deiOnode ptr 10 Delete the whole message from the linked lists 5222552 delOnode ptr 10 listO i listO tptrO tptrO ptrl0 if ptriO schild NULL delllist ptrlO schild if ptrlO prev NULL i if ptrlO next NULL head NULL else i head ptrl0 gt next ptrl0 gt next gt prev NULL perio ptrlO next else i 10 gt gt ptrlO next ptrlO next prev ptrlO prev ptriO ptrlO prev free tptrO Delete a SET IDENT in the corresponding level 1 list del lnode 2 del c Oct 30 10 50 1986 Page 28 listl ptr switch ptr gt case C columnar set if ptrl1 uval cschild NULL delcsflist ptr1 uval cschi break case F free text set if ptrl uval tschild NULL deltsnode ptr1 uval tschild break case L
250. Name MsgQueueName reset queue name CurFilePtr 0 reset list index if MsgFiles NULL return NULL Return end of list condition return MsgFiles CurFilePtr Point to next file for later filenq c Oct 30 10 50 1986 Page 17 include net h FileNQ Make a file named by FileName visible in the directory given in Queue by removing the in front of its name Return TRUE or FALSE result int FileNQ FileName Queue char FileName char Queue pathname 01 Storage for old filename pathname NewName Storage for new filename sprintf OldName s s Queue FileName sprintf NewName 55 55 Queue FileName unlink NewName Make sure the file doesn t already exist if link OldName NewName Rename the file removing the first char WriteLog FileNQ can t link OldName to NewName return ERR if unlink OldName Get rid of invisible directory entry WriteLog FileNQ can t unlink OldName return ERR returns fileopen c Oct 30 10 50 1986 Page 18 include net h 20 FileOpen Open the file FileName in the queue QueueName by constructing the full pathname of the file given these two components Return a file descriptor to the file or NULL if the file could not be opened FILE FileOpen FileName QueueName FileType char FileName char QueueName char FileType i
251. November 14 1986 so that they may be brought up to date when they return to action It may require special handling of priority messages for down nodes when it is not acceptable to wait through the retry process The TACCNET prototype provides the capability to determine the state of a site and to automatically route messages around a down site while keeping courtesy copies of all messages for bypassed sites The courtesy copies are delivered when the site is successfully contacted and the site is restored to active status The system keeps track of the current state of each node and keeps a record of the last successful contact as well as the number of failed attempts to contact a down site Sites are declared to be down when the number of failed contact attempts exceeds a user determined threshold 3 1 3 Failure Management The discussion of message rerouting brings up the topic of link failure There are different classes of failures which the system must be able to recognize and handle The system may be limited in its ability to recognize some types of failures by the limitations of the communications equipment t In any event the system must be smart enough to distinguish between local failures eg can t dial out and remote failures eg no answer or no login at remote modem 3 1 3 1 Classes of Failures The first class of failure is the local failure This includes conditions such as no available ports no response from local mod
252. OLDBERGOUNIX gt SENDFI C TIME 1987 02 12 1715 07 8 define PREEMPTION Set mode to check between blocks for interrupt finclude net h finclude iocontrol h finclude l iocontrol e extern pathname QueueName Reference semi global variable SendFile send a file to the remote system breaking it into certain sized blocks for better error detection Also preserve original file name int SendFile filepathname messagename pathname filepathname char messagename Message file name unique throughout network FILE FileFd int BlockSize Size of each block transmitted unsigned char BlockPtr int i int EndOfText unsigned int c for i 0 i lt strlen messagename i messagename il tolower messagename il Convert to lowercase if FileFd fopen filepathname r NULL cuf WriteLog SendFile cannot open message file filepathname return ERR Begin message introduction session if SendHeader messagename ACK Send header for message name WriteLog SendFile filepathname rejected by remote fclose FileFd return int NULL Normal return just don t send file Remote will accept message begin transmission BlockPtr unsigned char malloc BLOCKLENGTH 1 Allocate storage EndOfText FALSE Set to transmit ETB after each block while End0fText Loop until all blocks are sent
253. OM int ICOM i int int cury FILE AP_msgsf RP_imgf WP_Ipr we lear msg win wrefresh msg win waddch command win BS erase the command input character waddch command win waddch command win BS swi tch 24 jms c Oct 30 case case case case case case IM 10 51 1986 page touchwin win wrefresh create JIN msg touchwin command win wrefresh command win break touchwin help win wrefresh help win touchwi n helpcom win wrefresh helpcom win while c9wgetch helpcom win r touchwin main box win wrefresh main box win touchwin main win wrefresh main win touchwi n command win wrefresh command win break 25 print use vi cursor keys to position window then press ENTER key cury view box win begy curx view box win begx wrefresh view box win wmove main box win cury curx wrefresh main box win while c wgetch main box r switch c case h if curx lt 2 putchar BEEP else break case j if gt 8 putchar else break case k if lt 2 putchar BEEP else cury break case l if curx gt 8 putchar else tcurx break wmove main_box_win cury curx wrefresh main
254. ON Could not synchronize free ResponsePacket release storage SendByte ACK Transmit acknowledge signal EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt WAITNM C TIME 1987 02 12 1730 21 5 fin fin fin int sit EOF clude net h clude iocontrol h clude iocontrol e WaitName wait for the remote system to identify itself and return error status if timeout occurs Send acknowledgement signal if valid name received This ensures security and facilitates bidirectionality of system WaitName Remot eName RemoteName Name of remote system storage must be pre allocated unsigned char ResponseBlock Block from getblock allocated therein int EndFlag End of text flag needed for getblock int BlockLength Length of block remote name returned if ResponseBlock GetBlock amp BlockLength amp EndFlag NULL Unexpected condition no error handling here WriteLog WaitName did not receive remote name properly SendByte Make sure remote knows there s a problem exit BADCONNECTION Synchronization bad at initial connection i du if BlockLength gt SITENAMELEN Don t permit overindexing Remote system name is not of proper form WriteLog WaitName remote name is not of proper form SendByte Tell remote there s a problem free ResponseBlock
255. ORTFILE might exist i pathname AbortFile File name for abort file register int 1 Fd int Result sprintf AbortFile s s masterq ABORTFILE lt gt Fd open AbortFile O_RDONLY Result Fd ERR Return TRUE if file exists if Result close Fd Free the file descriptor return Result archive c Oct 30 10 50 1986 Page 14 include net h extern int Archiving Flag permitting archiving of all messages Archive copy file in given queue into archive directory int Archive FileName Queue char FileName char Queue int c int Oflags 0 int Mode 0664 int Fd FILE OldFp FILE NewFp pathname Path WRONLY O CREAT O EXCL if Arghiving return TRUE sprintf Path 85 55 Queue FileName name of input file if OldFp fopen Path r NULL read from this file WriteLog Archive can t read Path file not archived return FALSE sprintf Path ARCHIVEQ FileName name of archive file if Fd open Path Oflags Mode ERR see if it is already there WriteLog Archive Path already in archive fclose OldFp return ERR indicate to calling function that file exists if NewFp fdopen Fd w NULL open as a stream for writing WriteLog Archive can t write Path file not archived fclose OldFp return FALSE
256. PSFree PortList portlist PortList Structure to be freed int i for i 0 PortList i NULL i free PortList i gt Port free PortListlil Site free PortList i free PortList putsite c Oct 30 10 50 1986 Page 33 include net h extern int DebugLevel int PutSite SiteEntry site SiteEntry Looks up SiteEntry in SITETABLE and replaces its status information with the info in structure pointed to by SiteEntry If the site is not defined in the SITETABLE an ERR will be indicated by the return code the copy succeeds the storage used for the site entry will be be released i FILE 5 i teTableFd register int c register int n 0 long offset char Name SI TENAMELEN if Lock SITETABLE ERR i WriteLog PutSite can t lock SITETABLE exit 1 if SiteTableFd fopen SITETABLE NULL i WriteLog PutSite t Spon SITETABLE W UnLock SITETABLE return ERR scan through file until site found or EOF reached getc SiteTableFd skip first colon do fscanf SiteTablefd 5 Name get a site if EQUALS SiteEntry SiteName Name it is the one we seek copy the site status information offset ftell SiteTableFd ifdef XENIX fendi f fclose SiteTableFd SiteTableFd fopen SITETABLE fseek SiteTableFd toffset 0
257. Packet release storage FlushModemInput ModemFd if Count gt MAXRETRY WriteLog WaitEnq Did not receive packet SendByte Make sure remote understands WriteLog WaitEnq Bad connection Goodbye exit BADCONNECTION Could not synchronize free ResponsePacket release storage SendByte ACK Transmit acknowledge signal EOF GENMSG This section contains the functions used only by the Message Generator program GENMSG PATH ZSYS72 gt UDD gt GOLDBERGSUNIX gt GENMSG C TIME 1987 02 12 1608 52 2 finclude net h define TEMPFILEHEAD zc fdefine MAXSITES 20 pathname LogFile global LogFile for genmsg routines GenMsg is a program to generate messages for transmission to a remote syste It expects a priority as parameter 1 followed by a list of destinations There must be at least 1 destination given It will read the message body from stdin and build a message file or files which will be placed in the appropriate system message queue If the option in filename is given input will be read from that file Input may only be text data not binary Multiple destination paths or sites may be specified on the command line They should be separated by one or more spaces All messages will be given the same priority The destination may be given as a path alias an absolute path or a path alias with an absolute pa
258. Page 18 if EndsWi th UNIXPASSWORD PromptStr State GOTPASSWORD else Count increment retry count if EndsWith UNIXLOGIN PromptStr State GOTLOGIN if DebugLevel WriteLog Login wanted UNIXPASSWORD PromptStr break case GOTPASSWORD sprintf Command s r Password build response write ModemFd Command strlen Command send it if DebugLevel WriteLog Login sent password Command State CONNECTED we have sent our login sequence break free PromptStr release storage while State CONNECTED amp amp Count lt MAXRETRY lushModem nput ModemF d if State CONNECTED could not log in to remote system Login could not log in to remote system return ERR return GOOD default undefined system type sprintf System SysType WriteLog Login undefined system type System return ERR openmodem c Oct 30 10 50 1986 Page 19 include net h extern int ModemFd struct termio TTYSet int OpenModem PortName char PortName Open the named port for use by lOControl Make sure to set the line parameters correctly no buffering 1200 5 ignore input parity 7 bits out even parity out no echo etc Returns ERR if the modem cannot be contacted or ModemFd if all is well Set global variable ModemFd The flag 0 NDELAY must be set if the ioc
259. Preemption QueueName Give different return code if preempted exit INTERRUPTED exit GOOD Exit with normal completion code 0 EOF PATH ZSYS72 gt UDD gt GOLDBERGSUNIX gt ARCHIV C TIME 1987 02 12 1553 44 3 finclude net n Archive copy file in given queue into archive directory int Archive FileName Queue char FileName char Queue int FILE OldFd FILE NewFd pathname Path sprintf Path Zs Zs Queue FileName if OldFd fopen Path r NULL WriteLog Archive can t open Path return FALSE sprintf Path Zs Zs ARCHIVEQ FileName if NewFd fopen Path w NULL WriteLog Archive can t open Path return FALSE while getc OldFd EOF putc c NewFd fclose OldFd felose NewFd return TRUE EOF n 3 2 name of input file read from this file file not archived name of archive file write to archive file file not archived copy the file close the files PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt CHECKS C TIME 1987 02 12 1559 55 2 include lt stdio h gt int CheckSum data max unsigned char data int max CheckSum compute a l6 bit checksum of length bytes starting at int 1 long Result Storage for temporary result Result 0 for 0 i lt max i if
260. Prev NULL else ptris gt Prev taills taills gt Next ptr s ptris parent ptrl ptris gt Next NULL ptris gt fchild NULL ptris gt fdno FNO strcpy ptrils gt fdcat FCAT strcpy 15 gt FNAME strcpy ptrls gt fdesc fdsc strcpy gt strcpy ptrls notype format Partition notype into MIN MAX and TYPE pars_form ptrls gt notype strcpy ptrils gt dtype DTYPE ptris gt dmin DMIN ptris gt dmax DMAX taills ptris Add a field node in level 2 list of the columnar set add node FCAT FNAME field column Irj format char FCAT FNAME field column Iri 0 format 1 csfnode ptrcsf ptresf csfnode mal loc sizeof csfnode f the node is the first node of the parent node if ptrl uval cschild NULL ptri uval cschild ptresf 39 list c Oct 30 10 51 1986 Page 40 ptresf gt Prev NULL else ptrcsf Prev tailcsf tailesf gt Next ptrcsf ptrcsf parent ptr ptresf gt Next NULL ptresf gt fchild NULL strcpy ptresf gt fdcat FCAT strcpy ptresf gt fdname FNAME strcpy ptresf gt colhdr field strcpy ptrcsf colpos column strcpy ptresf gt j Irj strcpy ptresf gt notype format Partition notype into MIN MAX and TYPE pars form ptrcsf notype strcpy ptresf gt dtype DTYPE ptresf gt dmin DMIN
261. Q echo cleaning up SMASTERQ cd SMASTERQ clear out the work directories listed in SMASTERQ tables queuelist for i in Gcat tables queuelist do rm f 51 Si dev null 2 gt 61 done initialize the port and site tables cp tables sites save tabies si tes cp tables ports save tables ports Page 2 dport Oct 30 10 52 1986 5 0 5 MASTERQ usr taccnet cd SMASTERQ tables cat ports Page 3 dsite Oct 30 10 52 1986 MASTERQ S MASTERQ usr taccnet cd SMASTERQ tables cat sites Page l jtgen Oct 30 10 52 1986 MASTERO MASTERQ usr taccnet export MASTERQ ed SMASTERQ bin if S 5 then echo usage 0 priority dest dest exit fi ams cd SMASTERQ bin genmsg 5 2 gt dev nul 1 Page 5 jtmake Oct 30 10 52 1986 MASTERQ S MASTERQ usr taccnet export MASTERQ cd SMASTERQ bin if 1t 2 then echo usage 0 priority dest dest 1 exit fi fi te tmp ams gt file while file do vi file echo n Send Edit or Abort while read i do case i in Ala rm file exit Sis break 2 Ele break echo n enter s e or a esac done done cd SMASTERQ bin genmsg lt Sfile 2 dev null Page 6 jtsend Oct 30 10 52 1986 juge 7 MASTERQ S MASTERQ usr taccnet export MASTERQ cd SMASTERQ bin if 2 Iz 4 1 then echo usage jtsend msgname unitid priority
262. QmsUp MsgUp SerUp Flags for each module int Fd File descriptor to be returned from open 2 system call int i c char SysLockFile 100 FILE SiteTableFp site NextSite portlist PortList int OnLine int NumFiles 0 int Found 0 short y site ReadSite portlist GetPorts 0 void PSFree int QueueSize int ExitProcessor void LocalExit QmsUp TRUE MsgUp TRUE SerUp TRUE Fd open LQMS 0 RDONLY Try to open qms lock file if Fd lt 0 The qms is not running QmsUp FALSE else close Fd Fd open LMSGPROC O_RDONLY Try to open msgproc lock file if Fd lt 0 MsgUp FALSE The message processor is not running else close Fd Fd open LSERVER O_RDONLY Try to open server lock file if Fd 0 SerUp FALSE The server isn t running else close Fd 5 status c Oct 30 10 51 1986 Page 52 if display f the caller requested visual display give it PrintMenu move 0 0 StandOut for i20 i lt 80 i addch move 0 39 strlen System Status 2 addstr System Status StandEnd move 2 0 clrtoeo Q move 2 ams s UpDown QmsUp move 2 TOP2 msgproc s UpDown MsgUp 3 move 2 TOP3 printw server UpDown SerUp addch n else r
263. RUE FALSE Result FALSE if stat Window num Name amp buf 0 Check file status Result buf st_mtime Window num LastTime if Result Window num LastTime buf st mtime Record new mtime return Result changespeed c Oct 30 10 50 1986 Page 11 console h Speed Set polling speed void ChangeSpeed char 80 Return storage for menu prompt routine int TempSpeed char OutStr 80 Prompt string sprintf OutStr Polling speed is d Enter new value in seconds 0 10 Speed CmdPrompt OutStr Temp 80 if strlen Temp TempSpeed atoi Temp Convert to integer if TempSpeed gt 0 amp amp TempSpeed lt 10 Speed TempSpeed clear c Oct 30 10 50 1986 Page 12 include console h P Clear Erase contents of a window to be updated in the next pass void Clear char Temp 2 Temporary storage for window number string int WindowNum Window number to clear CmdPrompt Enter window number to clear 1 4 Temp 2 if strlen Temp WindowNum atoi Temp 1 Jx Convert to integer if WindowNum gt 0 amp amp WindowNum lt MAXWINDOWS Wi ndow Wi ndowNum Wi n Clear specified window werase WindowLWindowNum wrefresh WindowLWindowNum Wi n close c Oct 30 10 50 1986 Page 13 include console h Close Mark
264. S qd 8 add CST node J add csd node 9 add ts node Serre eee ee ee 11 File ams c Page 12 ere ee ee ee eee EEE ET ee ee ET ee 12 SET Handler 4 ps2 E ie A ICON Re o Swe 13 CSET MOF eee go oh P 14 FSET OCA OPERE CR 14 CSET MOr uersa ass qm V RUE SE AE 15 FIELD handler 15 DFi handlet 5 ea ex d p Ute vis 16 freer handlet 5 18 VALID ade rs Wd RACE ere eee ee ee A d ER ee ee 19 File blanks c Page 20 bl sup esee 20 DI pad 545552555554 65 TOTAM 20 File conv c Page 21 er Ty 21 ere ee 21 MIDS qd qe ERE IEEE P Saw E 21 File del c Page 23 dell Snode REY e de 54 9 114 224 803 33 23 de cstl 5t xaxa rx Car ee X 24 LEST NODC i xp ved MOSS ASS OA OC CY Res 24 delcsdlist 25 delcsdnode V AS 25 deltsnode pina uu ay tace der adea 120 del WES 445 aids ad car ara ACA aoe Bw whats We a 26 delOlrst s xs QU Sa doe a e 26 delOnode
265. S node is rendered inoperative it will be necessary to recover its C database from a backup at another node and reconstitute the database by collecting all messages sent to the node after the backup and before the failure It may be necessary for one CSS node to perform the function of a down node taking its place in the network and carry ing out the function of the down node until that node can be replaced The modern battlefield will offer a variety of communications media including existing telephone networks microwave links optical links packet radio and other more traditional media Since it may not be possible to determine in advance the media available for CSSCS data transfer it is desirable to have a system which is independent of communications medium Limited bandwidth for digital communications encourages reduction of data redundancy in message formats and message redundancy in reporting systems The CSSCS environment places the following constraints on the CSSCS e restricted bandwidth for communications e media transparent communications e nodes join and depart the network at will e nodes subject to catastrophic failure e must provide distributed backup and recovery of databases e must automatically route messages for timely delivery e must detect failures and reroute messages accordingly e messages in JINTACCS format The system must observe these constraints and carry out its functions with a minimum of operator inte
266. SAGE EXAMPLE MESSAGE NUMBER 5034 TITLE Supply Shortages SHORTSUP UNCLAS EXER LOG RED 88 MSGID SHORTSUP 2BDE19ARDIV 2007004 DTGM 200600 UNITIDM 2BDE19ARDIV 6KSHTSUP MAT EQUIP VEH CMNT 20 LWHEL M35A2 18152 006 12 TANK 1 2 190 CSE MISC RATIONS 5K GAL FUEL DSL A2 54 ECH LTMG M60 Ac 30 ECH MISC LITTER A18157 003 1 DENOTES ITEM ON REQUISITION NUMBER FOLLOWING 1 IS REQUISITION DOCUMENT NUMBER A2 DENOTES ITEM NOT ON REQUISITION ITEM 8152 006 URGENTLY REQUIRED FOR RESUPPLY VEHICLES TO FORWARD DEPLOYED UNITS ITEM A2A IS MCI ACCS A3 500 003 June 1984 MESSAGE INSTRUCTIONS Page 1 of 2 MESSAGE NUMBER 5025 TITLE POL Locations POLLOC GENERAL INSTRUCTIONS The POL Locations message is used to announce the location capabilities and availability of Class III items Actual quantities of fuel oil and lubricants are reported in set 3KCLTHRE he servicing capability and other type of Class III items available at the specific CL III point are reported in the AMPN set The sets EXER through NARR are prepared in accordance with the message instructions for the initial main text sets SPECIAL INSTRUCTIONS Set Identifier DTGM M Field 1 As of Date Time M Enter the as of time date hour and minute of the report 2C914 DUI 25 Set Identifier 3KPOLLOC M Field 1 Data Entry M Enter the data entry number DFI 082 DUI 001 Fie
267. SITETABLE return Result else SkipEOL SiteTableFd arrive here only if site was not defined in site table if DebugLevel o WriteLog ActivateSite site Site not found SITETABLE file is in update mode we must close and reopen in append mode if SiteTableFd freopen SITETABLE SiteTableFd NULL i WriteLog ActivateSite Can t open SITETABLE in append mode UnLock SITETABLE return ERR if DebugLevel Writelog ActivateSite adding site Site to SITETABLE write the site name then copy the rest of the site entry fprintf SiteTableFd c s Status Site while c getc Fd EOF pute c SiteTableFd fclose SiteTableFd WriteLog ActivateSite Site has been added UnLock SITETABLE return GOOD administer c Oct 30 10 51 1986 Page include net h extern int DebugLevel int Administer MsgFileName char MsgFi leName Message file name to process Administer interpret and execute network administrative command contained in file MsgFileName in MSGPROCQ int Result FILE MsgFi leFd int c read and parse the command if MsgFileFd FileOpen MsgFileName MSGPROCQ r NULL i WriteLog Administer can t open MsgFileName return ERR while c MsgFileFd HEADERLINE skip to command line SkipEOL MsgFileFd if Deb
268. SRMASTERQ backups SMYNAME SDATA2 if d SBACKDIR o w SBACKDIR then echo cannot access SBACKDIR exit 1 fi if f SBACKDIR SDATA1 then echo file SBACKDIR SDATAl already exists exit 1 fi if f SBACKDIR SDATA2 then echo file SBACKDIR SDATA2 already exists exit fi if fgrep 1 SMASTERQ tables sites gt dev nul then echo transfer 5 SBACKDIR SDATA bin genmsg 2 1 net adm retcode if Sretcode ne 0 then echo restoring 5 return code retcode fi echo transfer 5 2 SBACKDIR SDATA2 bin genmsg 2 1 net adm retcode if retcode ne 0 then echo restoring SDATA2 return code retcode fi else echo site 1 not found SMASTERQ tables sites Page 18 tload Oct 30 10 52 1986 Page 19 exit 2 fi unlock Oct 30 10 52 1986 MASTERQz MASTERQ usr taccnet cd SMASTERQ rm f LCK rm f tables LCK rm f bin LCK Page 20 Common Functions This section contains common functions used by many different programs and functions in the TACCNET system If the source code for a function is not given in the separate program list ings it will be in this section Table of Contents Thu Oct 30 10 50 52 1986 File Makefile Page File iocontrol e Page 3 File iocontrol h Page 4 File net h Page 6 File retcodes h Page 10 File sysdef h Page 11 File wait h 12 File abort c Page 13 AES Se Rd
269. TION TYPE E646 001 M 3 ORIGINATOR l 20 ANBS E 146 001 M 4 DATE OF REFERENCE YEAR MONTH OAY GN C075 010 DAY TINE OF REFERENCE 7 AN C 143 005 DATE TIME GROUP 13 ANB C647 001 DATE OF REFERENCE DAY MONTH YEAR 6N C 648 002 DATE OF REFERENCE DAY ALPHAMONTH YEAR 7 AN C 649 002 0 5 MESSAGE SERIAL NUMBER 7N 147 005 REPORT SERTAL 4 5 ANS 147 006 0 6 SPECIAL KOTATION 1042 001 OR 7 NASIS CODE 332 001 AMPN C NARR C 9861 INNF 00 00S V 322V MESSAGE CONTENT MESSAGE NUMBER 5006 PAGE 1 OF 2 TITLE CASUALTY INFORMATION REPORT CASSTATS PURPOSE TO REPORT CASUALTY INFORMATION IN FOUR CATEGORIES BROKEN DOWN BY UNIT TOTAL MILITARY PERSONNEL CLASS ANO SPECIALTY SKILL OR MOS THE FOUR CATEGORIES ARE KIA WIA MIA AND NON BATTLE CASUALTIES SET FIELO MANDATORY ENTRY START DF DUI IDENT CAT NO FLU DESC COL HEADER FIELU NAME COL J NO TYPE NO EXER C 1 EXERCISE NICKNAME 1 56 ANBS E 335 001 2 EXERCISE MESSAGE ADDITJONAL IDENTIFIER 1 16 335 002 OPER C T 1 OPERATION COOEWORD 1 32 336 001 0 2 PLAN ORIGINATOR AND NUMBER 3 23 ANS 925 001 0 3 OPTION NICKNAME l 23 ANBS 585 00 0 4 SECONDARY OPTION NICKNAME 1 23 ANBS 585 002 MSGID i CASSTATS MESSAGE TYPE l 20 ANBS 050 001 M 2 ORIGINATOR 1 20 ANBS E 146 001 0 3 MESSAGE SERIAL NUMBER 7k 147 005 REPORT SERIAL 4 5 ANS 147 006 E 0 4 MONTI 580 001 A 0 5 QUALIFIER 3A OE 568 001 0 6 _ SERIAL NUMBER OF
270. TSITES copy each altsite for this entry fscanf SiteFileFd 55 AltSites i will be equal to number of altsites found else getaltsites c Oct 30 10 51 1986 Page 15 SkipEOL SiteFileFd if i 0 then we didn t find a single alternate site WriteLog GetAltSites MsgPath no alternate sites fclose SiteFileFd Clean up after yourself return ERR Try to recover if i lt MAXALTSITES AltSites i NULL Terminate the list fclose SiteFileFd return 6000 Return no error condition getline c Oct 30 10 51 1986 Page 16 include net h char GetLine Line Fd register char Line register FILE Fd Read a line of input from the stream Fd into the string Line removing the newline character from the end if it is present register int i char ptr if ptr fgets Line LINELEN Fd NULL for isstrlen Line i gt 0 i NL Line i break return ptr getmsghead c Oct 30 10 51 1986 Page 17 include extern DebugLevel GetMsgHead Reads and decodes the header from a message file and returns a pointer to a structure containing the message priority courtesy copy status original destination and a list of all previous sites used for rerouting of the message header GetMsgHead MsgFileFd FILE MsgFileFd File containing the message itself
271. Thu Oct 30 10 51 37 1986 File Makefile Page 1 File checksum c 8 CHECKSUM vies iw rs TOES File createfile c Page 5 CreateFile EE 5 File exit c Page 6 EXIT VESTES ace Caw a sad E ee ee 6 File getblock c Page 7 GetBlock oe eee ERR a Sa eee ee 7 File getfile c Page 11 GetFi le 9 99 989029069 1 1 File getheader c Page 14 GetHead r Tem 14 File getpacket c Page 16 GetPacket ATTE 16 File iocontrol c Page 18 main dux PR EE uad ear he usage Wo ER Cada as eae areca aes 22 ShutDown SACRA OR OK ee ee eee ee al 22 File iocontroldb c Page 23 nal ues ce ow d CE KO RR oe Rr CN m dea 23 File iocontrolhdb c Page 24 RS 2h File movmem c Page 25 MOVNEM Dp vr ce eee C m 25 File preemption c Page 26 Preemption re 53 120 File send c Page 27 Send 9 9 9 27 File sendblock c Page 29 SendBlo6kK Aus w 4i res 29 File sendbyte c Page 30 SendByte i v eae see iat SES PEN 30 File sendenq c Page 31 SE
272. UCTIONS This message reports casualty information in four categories broken down by unit total military personnel class and specialty skill or MOS The four categories are KIA WIA MIA and non battle casualties The sets EXER through NARR are prepared in accordance with the message instructions for the initial main text sets SPECIAL INSTRUCTIONS Set Identifier KDTGRPTN M Field 1 As of Date Time M Enter the as of date time day hour and minute for the time of the report DFI 6914 DUI 25 Field 2 Report Serial Number M Enter the appropriate report serial number DFI 2 487 DUI 048 Set Identifier KUNITCAS This set is used to report unit s total number of casualties in four categories Field 1 Unit Identification M Enter the unit identification or the transliteratec unit name by unit number organization type and echelon level for the unit reporting casualties 987 DUI 005 or DFI 095 DUI 001 Field 2 Actual KIA M Enter the field descriptor followed by the total number of unit personnel killed in action DFI 959 DUI 006 Field 3 Actual WIA Ml Enter the field descriptor followed by the tota number of unit personnel wounded in action DFI zE959 DUI 013 Field 4 Actual MIA M Enter the field descriptor followed by the tota number of unit personnel missing in action DFI 959 DUI 014 Field 5 Actual Non Battle Casualties M Enter the field des
273. UserName NULL path just has a username UserName Path fclose MsgFd be sure to close the file if DebugLevel WriteLog MPMail user name is UserName if ValidUser UserName if user is not registered in etc passwd WriteLog MPMail unregistered user UserName return ERR build UNIX command to mail message to user sprintf Command mail 5 lt 5 5 2 gt dev null _ UserName MSGPROCQ MsgName if system Command 0 zero return code means it worked WriteLog MPMail can t invoke UNIX mail to UserName for MsgName later we may want to have the dead letter file removed here return ERR WriteLog 1 MsgName mailed to UserName return 6000 msgproc c Oct 30 10 5 1986 Page 27 include net h include signal h define ABORTFILE pathname LogFile global LogFile for msgproc routines int DebugLevel 0 runtime debug level 0 normal int Archiving TRUE Flag indicating that archiving is to take place main argc argv Message Processor main program int argc char argv This program monitors the MSGPROCQ directory and processes any files found there according to the file type The file type is given by the first letter of the filename All incoming messages whether generated locally or recieved from remote systems are placed in MSGPROCQ The pr
274. Window i Win Clear text on all windows wrefresh Window i Win PrintBorder i GoodWindow i Draw or erase given borders if GoodWi ndow i PrintTitle i Print open windows title 23 getdir c Oct 30 10 51 1986 Page 24 include console h include sys dir h define NFILES 96 Max files per directory define Size sizeof struct direct filename GetDir Dir char Dir long Iseek struct direct DirEntry register int Num static filename Entries NFILES int DirFd Directory file descriptor Num 0 if DirFd open Dir O RDONLY 0 i return NULL Return empty list if can t open directory if Iseek DirFd 321 0 long ERR Skip and i close Dirfd return NULL while read DirFd amp DirEntry Size 0 if DirEntry d ino ino t 0 amp amp DirEntry d name 0 a strcpy Entries Num DirEntry d name Numi close Dirfd if Num gt Q Sort Entries Num Entries Num NULL Set the last one to NULL return Entries else return NULL getdir c Oct 30 10 51 1986 Page 25 Sort Entries Num filename Entries register int Num register int Gap i j filename Temp for Gap Num 2 Gap gt 0 Gap 2 for i Gap i Num i for j i Gap j gt 0 j Gap if stremp Entries j Entries j Gap lt 0 b
275. XXXXXXXXXXXX 1 2 3 HNNNNNANNHHNNNA NNAAANNNNNNNN HNNNANNNNNA XXXXXXXXXXXXXXXXXXXX NNAAANNNNNN JKCLTHRE DE FUEL QTY TYP 011 0 LUB QTY TYP CMTS WN NXXXXXXXAXX NXXXXXXXXXXXXX HXXXXXXXXXXXXX XXXXXXXXXXXXXXX 2 3 4 5 AMPN RMKS DHNGRAOE AAAXXXXXXXXXXXXXXXXXXXXXX 1 PAGE 2 OF 2 7861 00 0057 V 522V ACCS A3 500 003 June 1984 Page 1 of 1 MESSAGE EXAMPLE MESSAGE NUMBER S026 TITLE POL Locations POLLOC A L EXER DESERT GALE 88 MSGID POLLOC 9SPTChD 1911825 DTGM 240600 3KPOLLOC DE LOCATION 01 PIPE END 3 62RST12345678 02 BLUE STAR 62RST156781234 3KCLTHRE DE FUEL QTY TYP OIL QTY TYP LUB QTY CMTS 01 25000GALMGS 550GALSAE40 200180690 NOTE 1 50000GALDSL 40BBLSAE10 02 50000GALDSL 100GALSAE40 NOTE 2 AMPN NOTE 1 400 GALSGF AVAILABLE CL III PT CAPABLE OF SERVICING 2 TANKERS AT THE SAME TIME NOTE 2 2000STCOAL AVAILABLE IN 10018 SACKS PT CAPABLE OF SERVICING 3 TANKERS AT THE SAME TIME MGS EXPECTED TO BE AVAILABLE 241200 DWNGRADE DECL 24 NOV 90 Information on this page is UNCLASSIFIED Classification is shown for example purposes only TACCNET G36 633 Final Technical Report April 28 1987 Appendix 2 TACCNET Demonstration Scenarios The following pages contain the demonstration scenarios used for the Advanced Experimental Demonstrations presented during the project These sce
276. _box_win we lear msg win wrefresh msg_win mvwin view box win mvwin view win cury l curx 2 touchwi n main box win touchwin main win wrefresh main box win wrefresh main win wrefresh view box win wrefresh view win ims c Oct 30 10 51 1986 Page 26 case p case case q case 0 Case s case 15 case v case V case ESC default break RP imgf fopen imgf r WP popen Ipr w while csgetc RP imgf EOF putc c WP lpr pclose WP lpr fclose break clear refresh endwin exit 1 break RP imgf fopen imgf r AP msgsf fopen msgsf a fprintf AP msgsf convert while csgetc RP imgf EOF putc c AP msgsf fprintf AP msgsf Nn fclose msgsf fclose RP imgf print cmsg The message has been saved in msgsf file break convert touchwin view box win wrefresh view box win break SWITCH 0 wclear msg win wrefresh msg win touchwin win wrefresh nai ncom win touchwin main win wmove main win y x wrefresh main win break waddch command win ICOM show the invalid command letter waddch command win BS put the cursor on it print cmsg Invalid command Try again break end of switch end of proc
277. a message to a desig nated group of nodes without remembering all of the nodes and their order or connectivity The TACCNET prototype provides store and forward message passing automated path selection with optional user override and path aliasing It does not provide the post office method of dealing with undeliverable messages but does provide mail holding for departed or inactive sites 3 1 2 1 Message Forwarding We have already discussed alternate sites and message passing In a network where nodes are expected to be mobile and to enter and leave the network at random we must provide a means for forwarding messages to appropriate nodes in the event that the designated recipient cannot be reached This means that the system must have a set of criteria for use in evaluating the state of a node in the network These criteria will be used to decide whether a node is down temporarily unavailable active or destroyed They system must be able to automatically decide whether to hold messages and keep trying to contact the remote site or to forward the messages to another site for delivery or process ing The system must monitor the state of each node and take appropriate actions to maintain connectivity and continued operability This may require the automatic rerouting of messages to insure prompt processing It may require generation and maintenance of courtesy copies of messages for bypassed nodes 90 TACCNET Technical Specification
278. a node has departed and is out of contact we may wish the system to hold any messages for that node until its return to action The mes sage processing system will need to keep the status of each node in the network available so that it can tell whether to hold or forward messages for such a node The system may need to create special directories in which to hold these messages It will need to detect the return of such nodes to action giving them their saved messages when they call in TACCNET Technical Specification November 14 1986 3 3 Low Level Issues In this section topics of relevance to the details of the TACCNET system design will be discussed Questions ranging from queue and port management to hardware and operating system requirements will be addressed Many of the issues treated here are in light of the higher level design decisions discussed previously In analyzing these decisions an attempt has been made to consider the broadest problems and their solutions Most of the discussion here focuses on the details of the TACCNET implementation itself since this best demonstrates the issues uncovered by the research Where applicable alternative approaches are proposed 3 3 1 Queue Management The use of file system directories as queues is very convenient in that it allows the developer to leave the task of managing and ordering the message files to the operating system There are however certain issues which must still be
279. a signal from the modem that no answer was detected The caller then checks the remote node s entry in the site table to if the 38 TACCNET Technical Specification November 14 1986 messages should be held or forwarded The site table contains a record of the number of unsuccessful attempts to call the remote node and a record of the date and time of the last successful contact with the node If the number of failed calls is below a defined threshold the site will be deemed probably down and messages will be held for a later attempt No more calls will be scheduled for that node for a short period of time If the number of failed calls exceeds the threshold the site is declared definitely down and its messages are forwarded to a defined backup site for processing No calls will be scheduled for a down site for a longer time period t A courtesy copy of each forwarded message is kept for delivery to the down site when con tact is reestablished Sites marked as probably down or definitely down are still called periodi cally Once contact is reestablished whether by calling the remote site or by receiving a call from that site the site table is reset to indicate that the site is back up In the event that call is answered and transmission begun only to be inter rupted in progress toconirol wil return an error code to the caller and a similar course of action will be followed 4 2 2 3
280. a window as closed so that its contents will be cleared and it will not be updated during a pass until it is reopened void Close int WindowNum char Temp 2 CmdPrompt Window number to close 1 4 Temp 2 Prompt user if strlen Temp WindowNum atoi Temp Convert response to integer else Wi ndowNum ERR Response was in error if WindowNum ERR amp amp WindowNum gt O amp amp WindowNum lt 5 Wi ndowNum Window Wi ndowNum Good FALSE Turn this window off wclear Window Wi ndowNum Win Make it go away wrefresh Window Wi ndowNum Wi PrintBorder WindowNum FALSE Erase window border closewindows c Oct 30 10 51 1986 Page include console h extern int AutoConfig Flag indicating auto save mode for configf CloseWindows gracefully remove contents of all defined windows and mark them as no longer active void CloseWindows 0 14 if AutoConfig TRUE Auto configuration mode on save configuration WriteConf configZ move 0 0 addstr x refresh erase clear refresh endwin emdprompt c Oct 30 10 51 1986 Page 15 1 1 CmdPrompt Display a prompt on the command line in the window Command and get user s response into given buffer maximum of max characters Echo user input and read until CR or NL void CmdPrompt str
281. able communications lines but only one conversation at a time is allowed between any two given sites 4 6 Tunable parameters The performance of the TACCNET system on a given machine depends on a number of factors including available memory disk space work load and pro cessor type The TACCNET system has a number of adjustable parameters which can be used to tailor a configuration to the needs or limits of a particular site These include message forwarding retry delays error detection thres holds archiving courtesy copies and scanning intervals 4 7 Broadcast messages The system allows one site to broadcast a message to all the sites it knows about from its own site table Such a message is the propagated throughout the network until every node has received a copy The system has the ability to check for and reject messages which have already been received so that unnecessary transmissions are minimized It is also possible to send copies of a message to other designated sites or to route messages through specific sites or paths in the network 4 8 Failure detection and management The TACCNET system is designed to operate in a failure prone environment In fact node failures are considered to be routine expected events and the sys tem will detect such failures automatically and route messages around failed nodes The system will automatically bypass a failed node and will keep a copy of the any messages for that node to be
282. ablish connection failure site table success J check call history yes invoke lOControl with site y name and port name site table to see if success site should be declared down no record successful declare call in site table i a ecord mae it site ta site ERN in site table down remove lock file and exit Msgproc gt get arguments from user scan mode command lock msgproc queue set working directory read message from msgproc input queue call PROCESS function to process message by type copy message to archive masterq name debug level move message to error queue error queue record error in log file m more messages in input log file queue to be processed one pass mode or shutdown command recieved no Process open message file and read destination path from message header E pcc message file messagename expand path if path table a necessary then check f M 9 for validity put message In new message in system appropriate system invalid path return error routine message for remote site queue check priority level and mark message accordingly message to be forwarded give message to UNIX mail facility make courtesy copy for orig
283. ace if fptr gt fchild NULL first field node in list fptr fchild node k node k Prev NULL node k Next NULL node k parent fptr strcpy node k csdata str puces node k else all following field nodes node k Prev dptr k node k Next NULL node k parent dptr k parent dsp c Oct 30 10 51 1986 Page dptr k Next node k strcpy node k gt csdata str dptr k nodefk fptr fptr gt Next end of for end of while Test if the columnar set has some data in it fptr ptri uval cschi 14 BAER GREL if fptr gt fchild NULL fptr fptr gt Next else LIVE TRUE break if LIVE del 1 1 1 Get the field level data from the columnar set list 2 Display them on screen 7 y addscr 158 head head int Isnode ptr ptr head wprintw main win Xn s pad front ptr gt fdname 40 getyx nain win y x 3 for i20 i lt ptr gt dmax i waddch main win wrefresh main win ptr gt y y ptr gt x x ptr ptr gt Next 10 dsp c Oct 30 10 51 1986 Page 11 Insert field value into the linear set node m
284. acket unused if ResponsePacket GetPacket amp PacketLength NULL ResultStatus ERR Timeout before packet was received else if ResponsePacket ACK ResultStatus NULL else if ResponsePacket EOT WriteLog WaitAck remote system was preempted connection terminated Exit GOOD else if ResponsePacket CAN WriteLog WaitAck remote system shut down suddenly connection terminated Exit GOOD else ResultStatus NAK Differentiate from ERROR and error if ResponsePacket z NULL free ResponsePacket Get rid of unneeded storage return ResultStatus waitbeep c Oct 30 10 51 1986 Page 43 include net h include signal h include iocontrol h include iocontrol e WaitBeep check the modem for BELL character ctrl G from the Honeywell indicating that the buffer on the Honeywell is not ready for more input Wait the specified number of seconds for the bell then return TRUE if the bell occurred FALSE otherwise int WaitBeep sec int sec Number of seconds to wait for beep char c int stopread Interrupt handler to abort read after sec seconds alarm 0 Clear pending interrupt x signal SIGALRM stopread Set interrupt handler alarm sec Mait sec seconds before sending SIGALRM signal if read ModemFd 1 gt 0 Read a character A beep in
285. age if EQUALS Key 15 MaxCalls Value else if EQUALS Key retrydelay RetryDelay Value else if EQUALS Key downdelay DownDelay Value else if EQUALS Key maxhangup MaxWait Value else if EQUALS Key timeout TimeOut Value else if EQUALS Key timeout gcos HoneyTime Value else if EQUALS Key forwarding ForwardFlag Value fscanf ParamFileFp Key amp Value fclose ParamFileFp signal SIGTERM ShutDown Set interrupt handler Set timeout to specific value for interactions with modem MainTimeOut TimeOut TimeOut MODEMTIMEOUT put the modem in command mode and set the switches if SetHayes PortName ERR i WriteLog Caller can t configure modem PortName Release release resources UnLock SysName exit ERR FlushModeminput ModemFd if Site ValidSite SysName NULL Site is valid if Condition State Site UP if DebugLevel WriteLog Caller invoked for SysName using PortName Connected Dial Site if Connected TRUE if DebugLeve WriteLog Caller Connected SysName about to log TimeOut MainTimeOut Restore main time out value if Login SysName Site gt Password Site gt SysType ERR if CheckDown Site record unsuccessful call GiveToMP SysName may n
286. age 5 CheckSum address length CreateFile name queue Exit errcode GetBlock length end GetHeader filename GetPacket length Preemption queuename Send address length SendBlock data length end SendByte byte SendFile pathname messagename SendHeader messagename SendPacket data length end iocontrol e e xternal net h Oct 30 10 50 1986 Page sysdef h stdio h lt sys types h gt sys ioctl h lt termio h gt fcnt l h ctype h finclude include f include f include include include include ifdef XENIX V fundef NULL System V XENIX define NULL differently define endi f define NULL O UMASK 002 return codes define fdefine fldef ine define define define define define define define fdefine ine define define define GOOD 0 BUSY 2 ERR GCOSLOGIN LOGIN UNIXLOGIN UNI XPASSWORD GCOS IG UNIX y EMULATED NETADMIN TRUE 1 FALSE TRUE UP TRUE RETRY UP DOWN UP 1 Message Type Descriptors define define define fdefine define define define define fdefine define define define define Network Administrative Commands define fldef ine fldef ine define def ine SERVERTYPE J MESSAGETYPE USERTYPE ERRORTYPE ty ADMINTYPE
287. age in priority queue message for database server give message to C2 unknown message type database server Cretum error gt return OK lOControl no arguments arguments from CALLER check argument list to g determine mode of operation site name read arguments and initialize in port name 4 MASTER mode succeed get remote ID packet send ACK fail send ID packet succeed and wait for ACK succeed initialize in SLAVE mode send ENQ then wait for ACK fail fail wait for ENQ and acknowledge succeed update site table to show successful contact with remote all done Send Mode more files more files more files all done Receive Mode more files Send Mode Send Mode Cero 4 heck for INTERRUPT 3 E check for or exit ox ALL DONE conditions ALL DONE not found empty queue get file from site queue send file ID packet and wait for ACK got ACK no got send file and wait for ACK retry limit MM got ACK path table yes delete file from site queue update site table note error in log file more files check site queue for more files to send empty queue signal EOT to remote system set ALL DONE condition Receive Mode check for INTERRUPT condition not found got EOT getfile ID packet got ID packet see if file is already
288. ageFile O CCTYPE mark non CC files for forwarding i sprintf OldPath SysName MessageFile sprintf NewPath s c s MSGPROCQ REROUTETYPE 1 1 FRename OldPath NewPath WriteLog GiveToMP moved OldPath to NewPath Count else if strlen SaveName 0 remember name of first CC message strcpy SaveName MessageFi le else see if we are back to the first CC message Done EQUALS SaveName MessageF ile if Count gt 0 sprintf Number Count WriteLog GiveToMP forwarded Number messages return 6000 lockfile c Oct 30 10 50 1986 Page 23 include net n int Lock FileName returns ERR if the file is already locked GOOD otherwise char FileName Simple file locking mechanism using open We try to lock FileName by creating a file called FileName LCK Setting Oflags 0 CREAT and 0 EXCL causes open to return ERR if the file already exists pathname LockFile register int i Fd int Oflags O_CREAT 0 EXCL return ERR if file exists int Mode 0664 sprintf LockFile Ss LCK FileName try and lock the file several times before giving up for i 0 i lt 10 i if Fd open LockFile Oflags Mode ERR sleep 2 else break if Fd ERR return ERR file was already locked else close Fd don t forget to close the file retu
289. alf of the document has been a description of the TACCNET pro totype developed as part of the CSSCS AED program This system is described to illustrate the main issues in CSSCS communications and is not to be con sidered as a fieldable system It is a starting point for further development It is not expected that the reader of this report will be fully able to understand and operate the TACCNET system It will probably be necessary to study the system source code in order to fully understand the system The TACCNET development team at Georgia Tech will be happy to answer any questions and provide any assistance necessary Appendix I to this report contains copies of viewgraphs used in a presentation about TACCNET These will be helpful in understanding the system Appendix II contains high level data flow diagrams for the major TACCNET system components These will aid in understanding the interactions of the TACCNET subsystems The versions are AT amp T System Vr2 AT amp T System IBM XENIX 1 0 SCO XENIX V ONYX Onix V PC IX DISTRIX 2 0 The machines are IBM PC XT IBM PC AT Burroughs B26 ONYX AT amp T 3b2 TACONET Technical Specification November 14 1986 6 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 References ACCS A3 400 004 Interface Specification For Maneuver Contro Element Interface With Combat Service Support Control Element August 1984 ACCS A3 400 005
290. ally using two different data bases the Message Database and the Command and Control D atabase The system may be invoked in either of two modes manual or automatic A message may be created manually by the user in response to system prompts displayed on the terminal Alternatively a message may be created and filled in automatically by the system using information from the database The manual interface to the message system is called yms for CCS Message System The automated interface used primarily by programs or in pipes is called ams for Automated Message System Both systems require the presence of the UNIFY relational database system and the prototype message dictionary The message dictionary is included in the C database prototype Mail for the site administrator should be addressed to root or taccnet AT TACCNET Technical Specification November 14 1986 which comes with the TACCNET installation materials 4 2 4 2 The Database The database is composed of two logically independent parts the Message Database and the C Database The Message Database contains the static parts of the JINTACCS messages the message format information The C Data base contains the variable parts of the messages transmitted or received That is information is automatically extracted from received messages and placed in the database transmitted messages are constructed using information automati cally e
291. ame and port name Success no record successful declare call in site table i record ite site ta site table 5 irte in site table down remove lock file and exit Msgproc gt get arguments from user scan mode command lock msgproc queue set working directory read message from msgproc input queue call PROCESS function to process message by type copy message move message to to archive error queue record error in log file masterq name debug level error queue log file more messages in input queue to be processed one pass mode or shutdown command recieved message Process open message file and read destination path from message header message file path table expand path if necessary then check return error lt lt _ for validity check priority level and mark message accordingly make courtesy copy for original recipient and forward to alternate site routine message for remote site put message in new message In system appropriate system queue user mail message for user at this site message to be forwarded give message to UNIX mail facility network administrative message give message to network admin server priority message put mess
292. amp strlen PortName 0 strcpy PortName PortList i gt Port copy port name make note of first non priority Caller if PortList i gt State PRIORTYPE amp amp strlen SeizePort 0 strcpy SeizeSite PortList i gt Site copy site name strcpy SeizePort PortList li Port copy port name schedule c Oct 30 10 52 1986 Page 13 PSFree PortList release the storage if Talking if DebugLevel WriteLog Schedule already talking to SiteName no need to call 7 UnLock PORTTABLE return GOOD if strlen PortName 0 no available port if Type PRIORTYPE 55 strlen SeizePort 0 can seize one WriteLog Schedule interrupting SeizeSite to get SeizePort strcpy PortName SeizePort if interrupt SeizeSite ERR WriteLog Schedule can t interrupt SeizeSite UnLock PORTTABLE return BUSY else if DebugLevel WriteLog Schedule no ports available at this time t UnLock PORTTABLE return BUSY mark the chosen port as IN USE TakePort PortName SiteName Type UnLock PORTTABLE only one caller per system allowed if Lock SiteName ERR WriteLog Schedule can t lock SiteName FreePort PortName return ERR build the shell command to execute CALLER if DebugLevel sprintf Caller s s 45 5 9 4 amp BIN CA
293. an implementation of such a system would be very high For example if a port is currently idle and in a dialin state and a call is scheduled for a remote system how can we safeguard against a remote system dialing in just as the state of the line is changed to dialout One of the two connections if not both will fail causing a significant delay in the eventual success of each connection This type of race condition adds greatly to the difficulty of implementing this scheme In most cases adequate solutions would require very low level dependencies on the hardware and operating system device drivers greatly degrading the portability of the system The mechanism for varying ports between dialin and dialout functions is not consistent among different versions of UNIX negatively impacting portability as well The alternative technique which is to allocate specific ports as either exclusively or exclusively dialou essentially doubles the minimum number of ports necessary to make a given machine fully connected On the other hand such a scheme could be easily implemented by associating a single process with each dialin port such as a UNIX getty that would invoke the iocontrol system when a call is received When a call to a remote system is scheduled the qms would be guaranteed of the availability of the dialout port upon examination of the port table This process is described below Such a system would be much more portable since
294. analyzed The second class of failure is the remote failure This includes no answer from remote modem busy signal no carrier no login prompt from remote system and login or startup failure These conditions span a range of problems from malfunctioning hardware to invalid login id or password When the remote sys tem answers the phone but does not allow login and synchronization we know that the site 1s operational and not destroyed The correct action may be to keep calling or to change the login id or password for that system When there is no answer to the call the site may be down or destroyed and the messages may need to be rerouted If there was a busy signal it may be sufficient to wait f For example the D C Hayes Smartmodem employed in the TACCNET prototype does not distinguish between the busy signal and the no answer condition The Cermetek Infomate does G36 633 Final Technical Report April 28 1987 while and call back If the call is answered but there is no carrier there may be a problem with the modems possible hardware incompatibility In each case a note must be kept in a log file describing the result of the attempted call and the possible cause of failure The third class of failure is the transmission interruption This includes link failure during transmission cancellation of transmission and preemption for priority messages These types of failures do not usually indicate t
295. and coded for each message and then compiled into a message handling program using compiler generating tools such as yacc and lex t This reduces and confines the message specific programming to a small part of the server system The yace and lex programs are supplied with the UNIX operating system and are used to develop parsers and compilers The processing of JINTA CCS messages is very similar to the operation of a compiler in which input text in a given syntax is decoded and certain operations are performed based on the input text 19 TACCNET Technical Specification November 14 1986 3 2 3 3 JINTACCS Automation JINTACCS message are defined in a hierarchical manner Messages are com posed of sets which are then composed of fields Fields are composed of data elements which may in turn be broken into sub elements This suggests a hierarchical representation of the message as a collection of set structures ordered in a defined sequence The ordering of sets for each message type is given in the JINTACCS definition manual The messages are intended to be readable both by human operators and by machines ie database servers Unfortunately there are numerous incon sistencies and ambiguities remaining in the message definitions which make it difficult for machines or humans to parse the messages correctly One example of this is the lack of data element delimiters in chain fields The string 100 90 could mean 100 pounds of
296. and control system will recuire some type of data base to store the information until at is neeced for decision making message creation This data base must be capable of being posted automatically arswerinc automated queries and responding to om line queries This task will require the analysis of the requirements for a data base estabdlisnment of the data base on tne two TACCS computers af tne CSS test bed and use of the data base to cenerate the cata elements required for the messages passed in tasks and Messages must be received from the DASG system and both received from and to the other TACCS system courtesy copies needing pasting due to tre TACCS being bypassed wnile it was nen coperational shall be automatically pasted ta the data base Data elements should be stored indezendent nessage format allowing update of individual items The Cemonstration cerformed as part of task shall be rerun using these data baces as the source and destination of the messages data elements Modification ta task Due to the delivery schedule of the TACCS computer systens the two TACCS computers will unavailable Two Onyx computer systems will be substituted for the specified TACCS systems The specific equipuent for the cemanstration will be as follows ro zywell DPS56 Model using GCOS422 to simulate the DASS using UNIX System III te simulate the TACCS FC AT us
297. anf MenuFp s Menu j i Read next menu item fclose MenuF p ini tscr Initialize curses system noecho Turn off character echo crmode clear refresh Command newwin 2 80 BOTTOM 0 Define command menu window if AutoConfig TRUE NeedRead TRUE ReadFile CFileName Read configuration file for i 20 i lt 4 i nitwindow c Oct 30 10 51 1986 Page 29 if CurScreen SWINDOWS PrintBorder i GoodWindow i Paint border around each window if GoodWi ndow i PrintTitle i Window i Win newwin Window i Size Window i Width 2 Windowli TopLine l Windowli LeftSide 1 move 0 0 refresh scrollok Window 2 Win TRUE Bottom two windows scroll scrollok 3 TRUE if Status FALSE amp amp AskUser CmdPrompt system is not up Do you wish to start it Temp 4 if tolower 01 y d RunShell taccnet FALSE Start TACCNET for the user Status TRUE PrintMenu lastlines c Oct 30 10 51 1986 Page 30 include console h LastLines Position the given file to approximately four lines from the end of the file so that only the last several lines will be displayed at startup void LastLines fp FILE fp File pointer for file to be positioned int c Storage for ch
298. ar NextFi le char QueueList sitename Queue pathname MasterQueue pathname FileName pathname LockName register int i register int Forever FALSE assume single pass option set below char Level 3 string version of debug level FILE ParamFileFp Parameter file pointer char Key 20 int Value int Fd int PollDelay 60 delay between processing scans in mode void ShutDown qms c Oct 30 10 52 1986 Page signal SIGTERM ShutDown umask UMASK validate and parse arguments if arge lt 2 gt 4 usage argv 0 for argc arge gt 0 argc switch argv argc 0 i case switch argv argc 1 case 0 Forever TRUE break case d sscanf argv arge 2 amp DebugLevel sprintf Level d DebugLevel break default usage argv 0 default strcpy MasterQueue argv argc get working directory set working directory if chdir MasterQueue 0 i fprintf stderr s invalid directory argv 0 MasterQueue usage argv 0 set the global LogFile for WriteLog sprintf LogFile log s log QMS if Forever WriteLog 0 5 activated in Scanner mode MasterQueue if ParamFileFp fopen PARAMFILE r NULL i fscanf ParamFileFp 5s d n Key amp Value while feof ParamFileFp amp amp ferror ParamFileFp i if EQUALS Key q
299. ar Unitld char Imt char DestPath char Priority i filename DataFile FILE DataFp register int Result ERR char Command 80 if DataFp StartMsg MsgType Unitld Imt NULL i WriteLog Request can t start data file m mnm return ERR get data from C2 database and prepare it for AMS switch MsgType 0 i case c case CASSTATS 5006 Result MakeCAS DataFp Unitld break case p case P POLLOC 5026 Result MakePOL DataFp break case s case 15 SHORTSUP 038 x Result MakeSUP DataFp Unitid break default WriteLog Request don t know how to MsgType message for Unitld if Result GOOD WriteLog Request could not build datafile for MsgType return ERR x fclose DataFp generate a JINTACCS message from the data in DataFile sprintf Command s lt 45 45 Xs Xs AMS DATAFILE MSG Priority DestPath if system Command GOOD request c Oct 30 10 52 1986 24 WriteLog Request Command FAILED 1 return ERR WriteLog Request requested MsgType Unitid return GOOD server c Oct 30 10 52 1986 include net h include server h include lt signal h gt pathname LogFile global LogFile for server routines main argc argv Message Server main program int arge
300. aracters read during scan for newline int i long Length Storage for length of file fseek fp OL 2 Position to end of file to determine length Length ftel fp if Length MINCHARS fseek fp OL 0 Reposition file to beginning it is too short else i fseek fp MINCHARS 1 Back up the minimum length while c getc fp if c EOF There were no newlines in all the text fseek fp MINCHARS 1 Go back again File is now near end at beginning of new line if possible newsys c Oct 30 10 51 1986 Page 31 include console h NewSys Monitor a given system by setting the first log file and first queue window for that system void NewSys char Temp 80 Return storage for CmdPrompt CmdPrompt Enter new system name to be monitored in windows amp 3 Temp 11 if strlen Temp strcpy CurSys Temp Make change known if used later wclear 0 Get any text off those windows werase 0 wclear Window 2 Win werase Window 2 Win 0 TRUE Make sure window is good Window 2 Good TRUE Window O LastTime OL Reset last mod time Window 2 LastPos OL Reset last file pointer strcpy Window O Name CurSys Set queue name sprintf Window 2 Name log s log CurSys Set log file name
301. ared as a technical report on work done under project G36 633 at the Georgia Institute of Technology surrounding the development and implementation of the Combat Service Support Control Sys tem CSSCS and the Command and Control C Database In order to fully explore these issues prototype CSSCS and C Database systems were designed and implemented Descriptions of these prototypes along with instructions for installation and operation of the prototype systems may be found in a compan ion report Considerations in the Design and Development of a Combat Service Sup port Compuler System which was written as a technical specification for the pro totype systems developed In the year ending in September 1985 the project group made good progress in investigating the issues surrounding the development of the Combat Service Support Control System In these endeavors fundamental issues such as dynamic network configuration automatic routing failure management data base backup and recovery JINTACCS message processing and network control were addressed The year was concluded with a successful demonstration of a network incorporating the above features and a presentation of results to AIRMICS and assembled AIRMICS contractors The demonstration network consisted of a Honeywell DPS 6 running GCOS Mod 400 two Burroughs B26 TACCS systems running DISTRIX and XENIX two IBM PC AT systems running XENIX and two ONYX computers running UNIX System V
302. artment of the Army position policy or decision unless so designated by other documentation Table of Contents 1 0 Introductlol 3 eU aes 240 OVEEVIEW 20 Design ISSUES i o over EROR 4 0 TACCNET Prototype Features 5 0 Summary Activities 6 0 Demonstrations and Presentations 7 0 System Requirements 8 0 Recommendations and Conclusions 9 0 References Appendix 1 Areas for Further Investigation Appendix 2 TACCNET D emonstration Scenarios Appendix 3 TACCNET Presentation Materials A ppendix 4 TACCNET D ata Flow Diagrams
303. astlines c printtitle o printtitle c cc 0 c printtitle c printborder o printborder c 0 c printborder c Makefile Oct 30 close o close c 0 E cc 0 c 10 50 1986 ciose c open c cmdprompt o cmdprompt c cc 0 c cmdprompt c getconf o getconf c ce D ec getconf c saveconf o saveconf c cc 0 c saveconf c readfile o readfile c cc 70 c redraw o redraw cc 0 c clear o clear c Go e changespeed o changespeed c cc 0 c changespeed c newsSys o newsys ce 0 6 readfile c clear c C newsys c Page 2 console h Oct 30 10 51 1986 Page 3 include lt stdio h gt include fcntl h include lt curses h gt include lt signal h gt include lt sys types h gt System wide data structures If this is the main program define the actual data otherwise define external references we ey define MAXWINDOWS 4 Maximum number of windows allowed MAXOPTIONS 11 Maximum selections command menu define MINCHARS 80L 3L Minimum characters for tail files define BOTTOM 22 Bottom line of terminal before menu define BKSP 0x08 Backspace key define OxOc Control L redraw key define BASECOL T Base column for columnar window info define TABSIZE 16 Width of a column a columnar window define LOGWINDOW 1 Cons
304. ation is desirable No need for relational query capability Reduced redundancy Database Design Command and Control C2 Relational may be preferred o Information not defined in hierarchical manner o Dataitems may berelated in many to many fashion Database contents are dynamic Relational query capability desirable O User oriented interface necessary First cut extract from JINTACCS messages and normalize Database Operations User interface for message composition Uses message dictionary to build prompt panels Builds message in JINTACCS format and submits to msgproc User can review edit or save message during composition New messages are easily added for automated composition assistance Database Operations server automated message posting o Reads JINTACCS messages Extracts variable data into file o Builds UNIFY update file Calls UNIFY to enter data update o Old data overwritten by new Limitations Csource module for each message o Needs embedded query language Database Operations build automated message generation O Given message ID destination priority Executes UNIFY query capturing data into file Reads data from file puts into JINTACCS template in new file o Submits new message file to msgproc for input to system o Table driven does not use message dictionary Limitations Csource module for each message o Need embedded query
305. bc scl sscmos sclase pol piname pfol ptyp pqty unit ptloc ppiname Relation Isi shows for every military unit the current stock for each logistical support item LSI LSI item and simod LSI model Relation cas includes the casualty information in four categories killed ckia wounded missing cma and non battle casualties cnbc These are then broken down by specialty csmos for each military unit cunitid Relation scl for each specialty sscmos identifies the corresponding military personnel class sclass Relation pol describes the current stock of Class III items fuel oil and lubri cants for each location p name The item class is given by pfol The packag ing unit is given by unit The item type is given by ptyp The quantity on hand is given by pqty Relation ptloc defines location ploc for each point name 50 TACCNET Technical Specification 4 2 4 3 Implementation of the Database Schema November 14 1986 The database schema described above has been realized using the relational database management system UNIFY The actual database design is shown in figures 4 3 and 4 4 below RECORD F IELD Isi 100 sikey lunitid lsicat ls imod lqty lunit lreq lreqno cas 100 caskey cunitid escmos ckia cwia enbe sel 100 sscmos sclass pol 100 polkey ptname ptyp pfol
306. build build o request o startmsg o datetime oN writelog o makepol o makecas o makesup o reaitime oN unitid o blsup o putdtgm o strip build server server o request o post o remove o dequeue o getdir oN cc writelog o datetime o lockfile o fileopen o frename oN makecas o makesup o postpol o postcas o postsup o putdtgm o startmsg o reaitime o unitid oN bisup o abort o 0 o server server o request o post o remove oN dequeue o getdir o writelog o datetime o lockfile oN makepoi o makecas o makesup o postpol o postcas oN postsup o fileopen o frename o putdtgm o startmsg oN realtime o unitid o blsup o abort o strip server build o server h build c cc 0 build c server o server c net h cc c 0 server c post o post c net h cc request o cc makepol o cc makecas o cc makesup o cc postpol o cc postcas o cc postsup o cc putdtgm o cc startmsg o cc realtime o cc c 0 poSt c request c net h c Q request c makepol c net h c 0 makepol c makecas c net h 0 makecas c makesup c net h c 0 makesup c postpol c net h c 0 postpol c postcas c net h 0 postcas c postsup c net h 0 postsup c server h putdtgm c 0 putdtgm c server h startmsg c c Q startmsg c realtime c 0 realtime c unitid o unitid c net h server h Page Makefile Oct 30 10 52 1986 cc c 0 unitid c blsup c cc
307. c 0 blsup c Page 2 server h Oct 30 10 52 1986 Page program constants for Server system def ine define define define define define define define define define define define define define define work define def ine define user SERVER AMS MSG REQ MSGID EXER OPER 5006 5026 5034 501 DBLOAD POLLOC server ams msg REQ MSGID 5006 5026 S034 usr bin sqi usr bin dbload POLLOC CASSTATS CASSTATS SHORTSUP SHORTSUP files for Server system DATAFILE data WORKFILE work uni tid UNITID functions for int Request int Post int PostPOL int PostCAS int PostSUP int MakePOL int MakeCAS int MakeSUP int PutDTGM int RealTime FILE StartMs W we we we we wo we we char Unitid char blisup we ee Server system handle JINTACCS request messages generate message hanide JINTACCS data messages post to C2 database post POLLOC message 5026 to C2 database post CASSTATS message 5006 to C2 database post SHORTSUP message SO3h to C2 database generate POLLOC message 5026 from C2 database generate CASSTATS message S006 from C2 database generate SHORTSUP message S034 from C2 database write DTGM date time group set for JINTACCS message return current system date and ti
308. c Either write a new file or return an error value 2 int GetFile int BlockLen Length of each new block read int ETXFlag indicates EOT received int Result Result from GetHeader call unsigned char TempBuf Block pointer for each read in block int MsgLength 0 Length of message index to Message FILE FileFp File pointer for temporary file filename FileName Name of current incoming message filename TmpFileName int 1 For each file received get header with message name Result GetHeader FileName Get header from remote system amp audit if Result EOT return EOT _ No new header arrived end of transmission if Result REJECT The incoming message has been rejected return NULL Exit gracefully as if nothing happened Create and receive new message fifdef FORHONEY FileName 0 toupper FileName 0 fendi f FileFp CreateFile FileName MSGPROCQ if FileFp NULL WriteLog GetFile can t open file for message FileName Exit RECOVERABLE while TempBuf GetBlock amp BlockLen amp ETXFlag NULL Loop for i 0 i lt BlockLen i if TempBuf i DLE i Skip the first DLE of any pair if i gt BlockLen WriteLog GetFile INTERNAL ERROR unmatched DLE at end of packet data Exit INTERNALERROR getfile c Oct 30 10 51 1986 Page 12
309. c Oct 30 10 52 1986 Page 15 include net h include server h char FOL FOL int PostPOL MsgFd FILE MsgFd int LastLine FALSE Set after last line read int Index char Command 80 char SetName 20 char Name 80 char Location 801 char Remainder 80 int RemLen Length of remaining fields char PtName 20 Allow maximum of 20 different names char QtyType 311201 long Quantity char Type 20 char Unit 4 FILE DataFp fopen DATAFILE Open output data file int Result int Found FALSE int i Result fscanf MsgFd s SetName Read 3KPOLLOC header while Found amp amp Result EOF if EQUALS SetName S3KPOLLOC Found TRUE else SkipEOL MsgFd skip to next set Result fscanf MsgFd Ss SetName Read 3KPOLLOC header if Found couldn t find the start of the data WriteLog PostPOL cannot find 3KPOLLOC set fclose DataFp return ERR SkipEOL MsgFd Skip to next line SkipEOL MsgFd Skip description line for columnar set for i 20 i lt 20 i PtName i NULL Initialize pointers to NULL while LastLine Process first columnar set POLLOC Result fscanf MsgFd 24 amp lndex Remainder fprintf stderr 4 s n Index Remainder if Result EOF WriteLog PostPOL POLLOC me
310. case r return c break default waddch 3 wrefresh win return c break ees sees eee eee char readstr str char str char c int i 0 ino l 66 str 1 c str i 50 return str scr c Oct 30 10 51 1986 page meu ee ee ee ee ee GENES ee ees GENES ee ee ee ee ES ees GENES es ee ee ee ee ee ee ee ee ee ee ee Print a message relevant to user input print str char str int line column getyx main_win line column we lear msg win wprintw msg 45 str wrefresh msg win wmove nain win line column wrefresh main win Print a message relevant to command input print_cmsg str char str int line column getyx command_win line column wclear msg win wprintw msg win Xs str wrefresh msg win wmove comnand win line column wrefresh command win m i r
311. case of double backslash else Do not checksum a stand alone backslash else endif Result int data i Result amp Oxffff Restrict to l6 bit quantity return int Result 4 createfile c Oct 30 10 51 1986 Page 5 include net h CreateFile build a file name in the directory given by Queue with a in front of the name to make it invisible using the name of the file in FileName Open the file and return a file descriptor FILE CreateFile FileName Queue char FileName pointer to new file name char Queue directory in which to put the file i pathname PathName pointer to the full path name of the file sprintf PathName s s Queue FileName Create full pathname return fopen PathName w exit c Oct 30 10 51 1986 Page 6 include net h include iocontrol h extern pathname QueueName Name of current queue Exit process exit condition for lOControl by unlocking the current queue and calling the system exit routine exit 2 with the given exit status code void Exit code int code Exit return code UnLock QueueName Try to remove the lock file associated with queue exit code getblock c Oct 30 10 51 1986 Page 7 include net h iocontrol h include iocontrol e extern pathname QueueName Reference semi global queue name extern int CheckBetwe
312. case of priority messages entering the queue for a system currently con nected there will be no need to fully interrupt the conversation and then redial the remote system Instead priority messages can be inserted into the queue so that they are transmitted in place of the very next routine message to be transmitted Priority messages in the same queue with routine messages are always given immediate service The current prototype does not however support a mechanism for forcing an immediate reversal of control When a priority message is inserted into the outgoing queue of a given system it may not be transmitted until all of the incoming messages are received This is because each site gains control of the conversation when the other site has transmitted all of its messages A possible expansion to the protocol would permit one site to regain control over the other in the event of priority messages so that it could transmit the messages and then return control The system requesting control would have to wait for an acknowledgement from the controlling system as the latter might be transmitting priority messages at the time of the request in which case it should not be interrupted 231 Technical Specification November 14 1986 3 3 4 Hardware Issues In order to implement a communications system with the desired degree of robustness and failure recovery desired certain capabilities must be present in the system
313. ceive int alrmint int i 0 Initialize wait to O char cptr Character to read from port unsigned char c Character to return cptr malloc 1 Just allocate a byte signal SIGALRM alrmint ifmdef FORHONEY alarm TimeOut Set timeout interval felse alarm HoneyTime Honeywell requires much longer timeout fendif if read ModemFd cptr 1 gt O alarm 0 reset timer cptr Get that unsigned 8 bit character free cptr Return storage return int c We got a character alarm 0 free cptr return ERR Return ERR if timeout or error on read int alrmint return ERR remove c Oct 30 10 50 1986 Page 37 include net h define FATAL 40 int Remove FileName QueueName filename FileName pathname QueueName pathname TempFi leName Complete path name of file to remove sprintf TempFileName s s QueueName FileName if unlink TempFileName ERR i WriteLog Remove FATAL can t delete TempFileName exit FATAL This is fatal cannot dequeue state c Oct 30 10 50 1986 Page 38 include net h extern int DebugLevel This routine will check to see that the site entry pointed to by Site is not declared down If it is the routine will look at the TimeToCall field and see if it is time to try again int State Site returns the value of Site
314. ceived within the threshold return the error condition int Receive int alrmint int i 0 Initialize wait to 0 char cptr Character to read from port unsigned char c Character to return alarm 0 cptr malloc 1 Just allocate a byte signal SIGALRM alrmint alarm unsigned MAXDELAY Set timeout interval if pus ModemFd cptr 1 gt 0 fprintf stderr fflush stderr alarm 0 reset timer c cptr Get that unsigned 8 bit character free cptr Return storage return int c We got a character alarm 0 free cptr return ERR Return ERR if timeout or error on read int alrmint return ERR EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt SEND C TIME 1987 02 12 1712 47 4 finclude net h include iocontrol h iocontrol e Send output a packet to the output device ModemFd Do not make any assumptions about format permit binary if needed Place an EM End of Message followed by an ASCII carriage return CR after the packet as part of the low level protocol int Send string length unsigned char string String of characters to send may be binary int length Length of string to send in bytes unsigned char Tail 3 write ModemFd string Tail 0 DLE Tail 1 write ModemFd Tail 3 write ModemFd Wn 1 length Output the st
315. checksum o getblock o getfile o getpacket o preemption o receive o send o sendblock o sendbyte o sendenq o sendfile o sendpacket o waitack o archive o sendname o waitname o filenq o movmem o N waitenq o dequeue o writelog o datetime o validsi te o myname o getdir o lockfile o readsite o fileopen o setport o remove o createfile o sendheader o getheader o touchsite o putsite o abort o exit o strip iocontrol rocontrolh iocontrolh o checksum o getblockh o getfileh o getpacket o preemption o receiveh o sendh o sendblockh o sendbyteh o sendenq o sendfileh o sendpacket o waitack o archive o sendname o waitname o filenq o movmem o N waitenq o dequeue o writelog o datetime o validsite o myname o getdir o lockfile o readsite o fileopen o setporth o remove o createfile o sendheader o getheader o touchsite o putsite o waitbeep o abort o exit o 0 o iocontrolh iocontrolh o checksum o getblockh o getfileh o getpacket o preemption o receiveh o sendh o sendbiockh o sendbyteh o sendenq o sendfileh o sendpacket o waitack o archive o sendname o waitname o filenq o movmem o waitenq o dequeue o writelog o datetime o validsite o myname o getdir o lockfile o readsite o fileopen o setporth o remove o createfile o sendheader o getheader o touchsite o putsite o wai tbeep o abort o exit o strip iocontroih iocontrol o iocontrol c iocontrol h cc 0 c iocontrol c iocontrolh o iocontrol c iocontrol h
316. child ams h Oct 30 10 50 1986 struct csnode str char char char char char 41 colhdr 25 colpos 4 j 2 notype 11 struct 1511 str parent struct csnode str prev next struct csdata str fchild 3 struct csdata_str char csdata 25 struct csnode str parent struct csdata str prev next struct tsnode str typedef typedef typedef typedef typedef typedef char tstext struct ist str parent struct struct struct struct struct struct IstO_str 11510 1611 str 11511 1 str isnode csnode str csfieldnode csdata str csdatanode tsnode str tsnode Page ams h Oct 30 10 50 1986 C library functions char malloc int strcmp int strlen char strcpy Qr char strcat user defined functions int atoin char upchar char upstr char bl l sup char bl int convert int convislist int convcsflist int convcsdlist 0 int convtsnode int display 09 int dsp lin set int dsp col set int dsp free int int readtxt 0 dnt SET handler int FIELD handler int DF handler int VALID int freef handler int addOnode int i nsOnode int 1 int add 15 node int add csf node 1 int add csd node int add ts node int delOnode int de
317. cket the packet number is only used to distinguish between two consecutive packets It is allowed to roll over as needed 49 TACCNET Technical Specification November 14 1986 With the exception of control information all data including message file names system names and message text are transmitted as data packets so that proper error detection can occur This ensures that line distortions during transmission of any data will not cause file names system names or actual message text to be misinterpreted 4 2 2 3 5 Binary Data Transmission Provision for data transparency makes it possible to implement the transfer of eight bit binary data between any two machines capable of processing eight data bits t The ioconirol system treats all data as eight bit quantities so that no distinction is made between a normal ASCII file transmission and a binary file transmission This leaves the communication level completely transparent to higher level functions except in the case of machine architecture incompatibili ties Any binary file placed in the queue for a system will be sent to that system as ts with no conversions No provisions were made to insure against failure due to machine incom patibilities If the receiving system cannot accept eight data bits and the file contains any eight bit values the message will be considered in error and both machines will abort The facility to transmit binary data was implemented
318. clude net h int TakePort Port Site Type char Port char Site int Type Get the port list and rewrite the PORTTABLE indicating that the named Port is being used to call the named Site with a transmission of the given Type Assume that the PORTTABLE is already LOCKED portlist PortList register int 1 Found FALSE if PortList GetPorts NULL WriteLog TakePort can t read port list to mark Port return ERR for is0 PortList il NULL i if EQUALS PortList i l Port Port Found TRUE break if Found WriteLog TakePort can t find Port in PORTTABLE UnLock PORTTABLE free PortList return ERR free PortList i gt Site PortList iJ gt Site malloc strlen Site 1 strcpy PortList i gt Site Site PortList i gt State Type if peer PortList ERR WriteLog TakePort can t write port list to mark Port free PortList return ERR free PortList return GOOD int FreePort Port char Port in use in use Finds the named Port in the PORTTABLE and changes the port entry to indicate that the port is no longer in use Assumes the PORTTABLE is UNLOCKED and does its own locking nw portlist PortList register int i Found FALSE if Lock PORTTABLE ERR WriteLog FreePort lock PORTTABLE return ERR if PortList Ge
319. criptor followed by the total number of non battle casualties for the unit 2E959 DUI 04 Field 6 Count of Personnel M Enter the field descriptor followed by the total number of casualties from the entries in fields 2 3 4 and 5 for the unit entered in field 1 DFI 22959 DUI 001 183 ACCS A3 500 003 June 1984 Page 2 of 3 MESSAGE INSTRUCTIONS C MESSAGE NUMBER S006 TITLE Casualty Information Report CASSTATS SPECIAL INSTRUCTIONS Continued Set Identifier 5SKCASLTY M This set is used to report unit casualties in four categories by military personnel class i e officer warrant officer and enlisted as well as the total number of casualties for each class Field 1 Military Personnel Class M Enter the character code for the military personnel class to be reported DFI 168 DUI 001 Field 2 Actual KIA M Enter the number of personnel killed in action for the personnel class entered in field 1 DFI 959 DUI 006 Field 3 Actual WIA M Enter the number of personnel wounded in action for the personnel class entered in field 1 DFI 959 DUI 013 Field 4 Actual MIA M Enter the number of personnel missing in action for the personnel class entered in field 1 DFI E959 DUI 014 _ Field 5 Actual Non Battle Casualties M Enter the number of non battle C casualties for the personnel class entered in field 1 DFI 6959 DUI 01 Field 6 Count of Personnel M Enter the
320. cument TACCNET prototype o Explore JINTACCS message processing issues JINTACCS grammar or definition language Functional definition of messages Message processing tools o Design Command and Control Database Top down design approach Analysis of intended usage user requirements Determine structure and content from usage requirements Interface with JINTACCS o Convert to ADA Accomplishments o Information transfer among network of widely differing machines S 1 CDC IBM 4300 Vax Unix PC over a variety of links 3780 BISYNC asynchronous dialup token ring o Prototype TACCNET using PC Unix and Honeywell GCOS featuring automated routing failure detection and rerouting o Extended TACCNET featuring database backup and recovery file transfer message processing and screen oriented user interface o C2 Database with automated JINTACCS interface o JINTACCS screen oriented automated composition tool o Source level system portability o Simulation of CSSCS network SLAM Status o Completed and installed a well defined fully featured prototype TACCNET for CSSCS environment o Developing detailed specification of TACCNET system design and implementation o Beginning first year of two year investigation of automated JINTACCS message processing CSSCS Environment o Nodes subject to catastrophic failures o Nodes are physically mobile but logically static o Frequent expected but unpredictable recon
321. d two toggle between these modes at will Input syntax checking and a help facility are under development Meetings and Presentations Regular meetings were held to exchange information and present results In addition planning sessions were called as needed A demonstration was presented on Feb 26 Test scenario 3 was executed successfully A request was made for better console monitoring utilities We are having some trouble getting customer support for the Honeywell C compiler Our main contact is Jim Hughes here in At lanta but he is only moderately helpful The questions are slowly being resolved Plans Continue PASCAL to C conversion on GCOS system Complete database backup and recovery system installation and testing phase Complete JINTACCS compostion tool and integrate into demons tration Develop a better monitoring interface for demonstrations Personnel Alton P Jensen project administration William Putnam project management and design oteven Coldberg system design and development SAIN research assistant There are two professional researchers involved with the project Bill Putnam works full time as project manager and chief software designer Alton P Jensen works one quarter time as project administrator There are two students working part time on this project They carry work loads ranging from 12 to 20 hours per week depen
322. d by FileName visible in the directory given in Queue by moving it up from the ZTEMP subdirectory Return TRUE or FALSE result Files left in ZTEMP will be removed at end of run int FileNQ FileName Queue char FileName char Queue pathname PathName Storage for directory path char CmdText 100 pathname DirName char getdir getdir DirName 0 Get name of working directory sprintf PathName s gt s Queue ZTEMP if chdir PathName 0 WriteLog FileNQ cannot change directory to Queue return ERR sprintf CmdText Zs lt FileName Prepare stmt to copy up if system CmdText Rename the file removing the first char WriteLog FileNQ can t copy FileName from temp directory to Queue chdir DirName return ERR chdir DirName return j EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt FILEOP C TIME 1987 02 12 1606 25 9 finclude net h FileOpen Open the file FileName in the queue QueueName by constructing the full pathname of the file given these two components Return a file descriptor to the file or NULL if the file could not be opened FILE FileOpen FileName QueueName FileType char FileName char QueueName char FileType pathname TempFileName Complete pathname of file to be opened if strlen QueueName 0 sprintf TempFileName Zs Zs QueueName FileName e
323. d in the Message Processor input queue The Mes sage Processor reads the destination path of the message and attempts to look it up in the path table If the path is not defined msgproc checks the system userid file to see if the message is for a user If so the message is reclassified type and placed back in the input queue When a user mail message is _ found in the queue msgproc invokes the UNIX mail utility and sends the mes sage to the named user There are two user id names which have special meaning to the Message Pro cessor The userid net adm is an alias for the network administrator function of the Message Processor Messages addressed to that user will be treated as network administrative messages to be processed by the system The userid server is an alias for the C Database Server process Messages sent to that address will be placed in the server input queue for processing as JINTACCS messages for the database system 4 2 3 4 Administrative Messages The operating environment of the TACCNET system requires that it anticipate the frequent arrival and departure of nodes Further the network must be reconfigurable without human intervention at each node To this end a special class of message was created The network administrative message class A is used to add delete change or examine the information in a node s site table Administrative messages are also used to transfer files among TACCNET
324. d initiate transfers when so com manded by the operator The QMS program was not implemented on the Honeywell since it is not expected that the DAS3 will require its capabilities 6 3 In Process Review In August 1986 a joint IPR for all AIRMICS contractors was hosted by AIRM ICS The TACCNET project group presented four hours of briefings and demonstrations on the project and on the TACCNET system As a result TACCNET was installed on several other machines and is being used by some other AIRMICS contractors on their projects The visual aids used in the IPR are provided in appendix 3 of this report 25 TACCNET G36 633 Final Technical Report April 28 1987 7 TACCNET System Requirements In this section the hardware and software requirements for the TACCNET software are defined The system was designed and developed with portability as a major concern and should be easily ported to any machine using the UNIX operating system or one of its derivatives 7 1 Hardware The TACCNET software has been installed and tested on ONYX and IBM PC AT computers These machines were used to simulate the TACCS system The system requires at least one 360K floppy disk and a minimum of 10 mega bytes of hard disk storage The minimum memory required to run the system is 512K bytes The GCOS part of the system is installed on a Honeywell DPS Level 6 minicom puter 7 2 Operating Systems All software for the TACCS has been written in the C prog
325. d is short message title and lt priority gt and destination as described above 4 2 4 6 Conclusions In the development of the prototype system a number of observations were made regarding the suitability of relational databases ease of use of various systems and future expansions of the system These concerns are discussed below 4 2 4 6 1 The Relational Model vs the Hierarchical Model For the implementation of the Message Database a hierarchical system might be a better choice than a relational system for the following reasons e JINTACCS messages have been defined in hierarchical fashion Most redundancies included in the relational database design could be reduced in the hierarchical database design model e The information in the Message Database is used primarily as a message dictionary This information is relatively static as message formats will not be added or modified on a daily basis 2155 Technical Specification November 14 1986 e information is always accessed in a hierarchical manner fields within sets within messages and there is no real need for the power of a rela tional query language e Speed of operation is desirable in the construction and processing of the messages This is not the case for the C database e Command and control information in general may not be defined in a hierarchical fashion since any data objects required by CSS may be stored
326. d o net h hold c cc 0 c hold c reroute o net h reroute c cc 0 c reroute c process o net h process c cc 0 c process c mpmail o net h mpmail c 0 c mpmail c administer o net h administer c 0 c administer c forward o net h forward c cc 0 c forward c getaltsites o net h getaltsites c cc 0 c getaltsites c Makefile Oct 30 10 51 1986 Page 2 getmsghead o net h getmsghead c 0 c getmsghead c handlerror o net h handlerror c 0 c handlerror c makecc o net h makecc c cc 0 c makecc c validuser o net h validuser c cc 0 c validuser c high o net h high c cc c 0 high c recover o net h recover c c 0 recover c hashtime o net h hashtime c cc c 0 hashtime c rmhdr net h rmhdr c cc o rmhdr rmhdr c strip rmhdr msgproc e Oct 30 10 51 1986 Global variable descriptions extern int DebugLevel Runtime debug level O normal 4t Fi 3 activatesite c Oct 30 10 51 1986 Page inelude net h extern int Debuglevel Runtime debug level 0 normal int ActivateSite Fd FILE Fd ActivateSite Read a site name from the stream Fd and look it up in the site table If it is defined and active do nothing If it is not defined add it to the table If it is defined but deactivated reactivate the site by changing the site delimiter DELCHAR to a FIELDMARK so that ValidSite will see it FILE SiteTabl
327. dHeader TIMED OUT waiting for acceptance messagename Exit LOSTCONTACT FlushModem nput ModemFd Make sure no garbage remains return Result NULL 7 ACK Return acceptance flag sendname c Oct 30 10 51 1986 Page 36 finclude net h finclude iocontrol h include LA SendName send this system s node name to remote system for secondary login and identification Remote system needs to know who called so it can check for outgoing messages for that system SendName char ThisSiteName Name of current site int Si teNameLength Length of site name to transmit int GoodResult Result from sendblock call int EndFlag TRUE End of text flag for sendblock int Length Length of response buffer not used int Result Result from waitack ThisSiteName MyName Get the name of this node Si teNameLength strlen ThisSiteName FlushModemInput ModemFd Clear input buffer before sending name Send the block and wait for an acknowledge GoodResult SendBlock ThisSiteName SiteNameLength EndFlag free ThisSiteName FlushModemInput ModemFd Get rid of possible extra information if GoodResult i WriteLog SendName could achieve validation from slave Exit LOSTCONTACT Now acknowledge login must get double acknowledge Result WaitAck
328. data il unsigned char Result int datalil Result amp Oxffff Restrict to 16 bit quantity return int Result EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt CREATE C TIME 1987 02 12 1600 44 3 finclude net h CreateFile build a file name in the directory given by Queue putting in in the ZTEMP subdirectory to make it invisible using the name of the file in FileName Open the file and return a file descriptor FILE CreateFile FileName Queue char FileName pointer to new file name char Queue directory in which to put the file pathname DirName storage for current working directory name pathname PathName pointer to modified filename invisible FILE Result resultant file pointer from fopen 3 char getdir getdir DirName 0 Save working directory name sprintf PathName Zs 52s Queue ZTEMP Put files in temp queue if chdir PathName 0 WriteLog CreateFile cannot change directory to Queue return FILE NULL Result fopen FileName w Create the file chdir DirName Change back to parent directory before returning return Result Return file pointer or NULL if error EOF PATH TIME include include include ZSYS72 gt UDD gt GOLDBERG SUNIX gt GETBLO C 1987 02 12 1612 22 1 net h iocontrol h iocontrol e GetBlock read t
329. de adjust the site tables of the local and emulated node to show that they are in fact resident on asingle machine and invoke TACCNET in the new root directory This capability can be used to maintain a logical configuration even when net work nodes are destroyed vut TACCNET G36 633 Final Technical Report April 28 1987 4 TACCNET Prototype Features The TACCNET system is fully described in the technical specification referenced earlier and we will not attempt to repeat that description here In this section we will highlight the principal features of the prototype CSSCS and provide a general overview of the system and its capabilities 4 1 Heterogeneous Communications The system provides media transparent communications between machines of different types and sizes requiring only that the TACCNET software be present on each machine The TACCNET system will run on any machine which can run the UNIX operating system This encompasses a broad range of hardware classes including personal computers microcomputers minicomputers and mainframes The TACCNET system has run on the following machines ONYX IBM PC XT IBM PC AT Burroughs B26 TACCS ATT 3B2 DEC 11 780 Honeywell DPS 6 The system normally operates at 1200 bps over voice grade phone lines but will operate over other media at any speed The system is completely automated and uses auto dial auto answer modems 4 2 Binary data transfer The TACCNET system trans
330. de are placed in that node s queue qms scans the queues periodically to look for messages to transmit When it finds a queue with at least one message to be sent it examines the system port table to see if a dialout port is available If a port is available a call to the desired node will be scheduled It may find that a transmission is already in progress for the desired node In that case no call is necessary so it goes on to check the other queues TACCNET Technical Specification November 14 1986 In the event that a call is not in progress and a port is not available qms chooses a course of action based on the priority of the outgoing message e If there are no priority messages in the queue for the remote site qms will let the transmission wait until a port becomes available e If there are priority messages the queue gms will attempt to preempt a port engaged in routine transmission to some other node e If all ports are busy with priority transmissions the new transmission will have to wait until a port becomes available The gms schedules a call to a remote node by marking a port as in use and invoking the caller process with the name of the port to use and the name of the node to call The qms will continue to schedule calls until all ports are in use or there are no more queues containing messages for nodes that have not been scheduled for a call Before scanning the TACCNET node system queues f
331. de development 25 Remote backup system 20 Database recovery 10 Archive search amp retrieval 0 Alternate database site operations 50 Testing and integration 0 Work for Task 1 25 DPS 6 PASCAL to C Conversion Source code transfer 100 IOControl system 50 Caller 50 CenMsg 0 Integration with TACCNET 0 Work for Task 2 20 Technical Specification 0 Performance and Cost Report Contract Number DAHC06 85 C 0012 Project Number G 36 633 Georgia Institute of Technology January 1 1986 to January 31 1986 Overview The C functions and shell scripts for the database backup function have been installed and tested Work is nearly complete on the recovery function Code to allow the distribution and han dling of TACCNET broadcast messages is in development Broadcast messages are those which are sent from one site to all other sites in the network This type of message will be used to send out requests for database recovery from archived messages It may also be used to distribute network wide routing in formation Shinn reports progress in the development of the screen editor interface for the JINTACCS message entry system The system uses the curses screen handling package This package is supported on almost all UNIX systems with only minor differences among the different UNIX versions The interface as planned will prompt the user in a screen oriented as opposed to line oriented manner and user the responses to build a JINTACCS format m
332. deed occurred alarm 0 FlushModemiInput ModemFd return c 007 else return FALSE A beep was not received a stopread alarm 0 return 1 Cause read to abort with 1 result code waitenq c Oct 30 10 51 1986 Page 14 include net h include iocontrol h include iocontrol e extern int MaxRetry WaitEnq wait for an enquire signal from remote system and return error status if timeout occurs Send acknowledgement signal if enquiry received This establishes synchronization with remote after local system is activated int WaitEnq i unsigned char ResponsePacket From getpacket allocated therein int PacketLength Needed for call to getpacket unused register int Count 0 retry counter while Count MaxRetry if ResponsePacket GetPacket amp PacketLength NULL i if DebugLevel WriteLog WaitEnq Timed out waiting for SendByte else if ResponsePacket ENQ break else free ResponsePacket release storage FlushModemInput ModemFd if Count gt MaxRetry WriteLog WaitEnq Did not receive packet SendByte NAK Make sure remote understands WriteLog WaitEnq connection Goodbye Exit BADCONNECTION Could not synchronize free ResponsePacket release storage SendByte ACK Tran
333. didnt get UNIXLOGIN prompt free PromptStr release storage while LoggedIn amp amp Count lt MAXRETRY FlushModemInput ModemFd if jp could not log in to remote system WriteLog Login could not log to remote system return ERR return 600D default undefined system type sprintf System SysType WriteLog Login undefined system type System return ERR EOF IOCONTROL This section contains the functions used only by IOControl program IOCONTROL PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt IOCONT C TIME 1987 02 12 1622 41 8 include net h finclude iocontrol h IOControl perform both SEND and RECEIVE functions for bottom layer of network system Use character oriented protocol with check sums and stop and wait retransmission scheme With a single packet transmission window If invoked by local system assume role of SENDER at start otherwise become a RECEIVER for the first transactions Global variables for I O Control system int ModemFd Modem file descriptor int SeqNo 0 Current packet sequence number pathname LogFile Global LogFile for IOControl routines pathname QueueName Name of queue from which we re reading int DebugLevel 0 Runtime debug level 0 normal main argc argv int argc char argv l int mode
334. discarding sleep 2 Make sure no more garbage comes FlushModemlnput ModemFd Get rid of old SendByte NAK length 0 continue Skip to the next iteration TempPacket length c Put this character in the block Remember c DLE amp amp set or reset as needed getpacket c Oct 30 10 51 1986 Page 17 ifdef DEBUG mc n ff lush tmp endif if RevByte ERR This was an error return the NULL pointer return NULL ength Offset length to start at 1 Ptr unsigned char malloc length 1 Allocate necessary storage if Ptr NULL i WriteLog GetPacket OUT OF MEMORY allocating for packet Exit INTERNALERROR movmem TempPacket Ptr length Move data to new buffer ifdef DEBUG fclose tmp endif return Ptr Back to caller with good pointer iocontrol c Oct 30 10 51 1986 Page 18 include net h include iocontrol h include lt signal h gt E OControl perform both SEND and RECEIVE functions for bottom layer of network system Use character oriented protocol with check sums and stop and wait retransmission scheme With a single packet transmission window If invoked by local system assume role of SENDER at start otherwise become a RECEIVER for the first transactions Global variables for 1 0 Control system int Mod
335. dler ALIAS Build up Main Text Sets of Message char ALIAS d char CAT cat char SETID 9 set id struct char SALIAS 10 int SNO SETKEY retrieve each setid in the order of set no add set node strncpy SETKEY SALIAS bl pad ALIAS 10 10 for SETKEY SNO 1 acckey sets amp SETKEY 0 SETKEY SNO i gfield scat CAT CAT 3 0 gfield setid SETID SETID 8 O Manage the set according to its type X if SETID O gt 0 amp amp SETID O lt 9 columnar set CSET mgr SETID bl sup CAT else if EQUALS bl sup SETID EQUALS SETID NARR i T EQUALS SETID RMKS free text set I ams c Oct 30 10 50 1986 Page 1h FSET_mgr SETID bl sup CAT else linear set LSET mgr SETID bl sup CAT Columnar Set Manager o CSET mgr SETIO CAT char SETID char CAT fprintf stderr NnSET ID S s SETID add node C SETID FIELD handler C SETID CAT Free Text Set Manager FSET mgr SETID CAT char SETID char fprintf stderr nSET ID s SETID 1 F SETID freef handler 0 ams c Oct 30 10 50 1986 Page 15 Linear Set Manager LSET mgr SETID char SETID char CAT if EQUALS CAT R for
336. e BDate time 1 0 sprintf Str Zs ctime amp BDate Str strlen Str 1 730 Zap NL placed by TIME 2 return 0 EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt DEQUEU C TIME 1987 02 12 1602 24 1 finclude net h DeQueue Return the name of the first message in the input queue opened via GetDir Return NULL if the queue is empty int CurFilePtr Pointer to current filename char DeQueue MsgQueueName char MsgQueueName static char MsgFiles Pointer to all the files in the directory if CurFilePtr 0 MsgFiles CurFilePtr NULL List exhausted read again for more file names MsgFiles ReadDir MsgQueueName CurFilePtr 0 Point to the first filename if MsgFiles char NULL return NULL Return end of list condition CurFilePtr Point to next file for later EOF return MsgFiles CurFilePtr 1 Return the file name PATH ZSYS72 gt UDD gt GOLDBERGSUNIX gt DIR C TIME 1987 02 12 1603 42 0 finclude net h define NFILES 100 char Entries NFILES FILENAMELEN GetDir Return directory structure expected by dequeue containing entries in directory specified by parameter Dir This version is rewritten specifically for the Honeywell DPS 6 char GetDir Dir char Dir Name of directory to read char star_name Honeywell directory
337. e The console program can by invoked on a cursor addressable terminal with the command console Several options can be applied to this command to vary the initial environment of the User Interface These options described below can be entered in any order on the command line according to the following syntax console pathname option value The optional pathname tells the User Interface where the TACCNET root direc tory structure is located This is in case the user wishes to monitor a TACCNET system which is situated a directory other than the defined MASTERQ direc tory If this parameter is not given the console program will try to execute in the directory defined by the environment variable MASTERQ If there is no such variable the Interface will assume the default directory usr tacenet There are several possible options which can be given on the command line to set up the system for the user t Associated with some options are values which t Typically no options are required since the console program will resume operations under the same configuration as the most recent execution TACCNET Technical Specification November 14 1986 can be names of files or system queues The following are the possible command line options and their values for the console program f conf Pre load the configuration file conf to define a saved system state If conf is not specified use the file
338. e tables params etc passwd Interrupt the system iocontrol iocontrol n caller qms msgproc 5 nserver 20 20 14 14 10 80 128 char filename FILENAMELEN char pathname PATHNAMELEN char sitename SITENAMELEN struct Page site table entry TimeToCall SysType filename Password pathname PhoneNum MAXPHONENUMS 1 site typedef int int struct Priority CCF lag char DestSite name of the site up down priority busy number of times we called so far don t call before this time operating system type password for taccnet login array of phone numbers to try Message priority class 1 6 Courtesy copy flag TRUE FALSE Destination site name char DownSi tes MAXDOWNSITES 1 List of previously tried sites header 8 net h Oct 30 10 50 1986 typedef struct port table entry char Port port name unix path name amp char Site remote site name if connected int State port state Available Routine Priority portentry typedef portentry portlist Unix calls Unix is a registered trademark of ATT Bell Laboratories char char char char char char ong calloc ctime getenv malloc strcpy 0 strrchr time unsigned sleep FILE popen System functions cha
339. e field environment timeliness of information can often be critical There is also the matter of deciding who polls whom how often to call and how to handle TACCNET Technical Specification November 14 1986 high priority messages It is possible to envision a compromise where some nodes are polled and others communicate at will This type of system could take advantage of the inherent hierarchical relationships between superior and subordinate elements within CSS Store and forward message passing could be used to allow nodes which do not know how to contact each other directly to communicate through intermediate nodes A modified post office scheme can be used to handle messages for unknown destinations they are passed on to a designated node which may know how to deliver them or may pass them on to another designated node and so on This would allow nodes to restrict their database of network con tacts to those needed for routine operations 3 1 1 2 Priority Message Handling During the development of TACCNET we were unable to find information detailing the exact messages used within CSS and the frequencies of transmis sion of those messages We did encounter some documentation which indi cated that there would be response time criteria associated with some JIN TACCS messages The expected response times ranged from less than one minute to over a week This implies a need for different classes of service for messages
340. e and participat ing fully in the test scenarios involving database backup and recovery We were able to use the TA CCS node as a backup site for the other nodes how ever A meeting was held to discuss the desired content of the TACCNET Technical Specification required for Task 3 It was decided that the spec should contain a high level design description user manual and an installation guide for the TACCNET system A briefing and demonstration were scheduled for February 19 5 6 February 1986 The PC AT with the hard disk problem was repaired and reinstalled The latest version of TACCNET was installed on the two PC AT systems xenics and xenair one ONYX system sysa and the TACCS taccs DISTRIX system The new version contained a robust login procedure database backup system broadcast messages and improved error logging The JINTACCS message composition tool was nearing completion It allowed the user two operate in command or editing mode and to toggle between these modes at will Input syntax checking and a help facility were under develop ment 20 TACCNET G36 633 Final Technical Report April 28 1987 A demonstration was presented on Feb 26 Test scenario 3 was executed suc cessfully This is described in the next section Demonstrations and Presenta tions A request was made for better console monitoring utilities We had some trouble getting customer support for the Honeywell C compiler The questions wer
341. e call is answered but there is no carrier there may be a problem with the modems possible hardware incompatibility In each case a note must be kept in a log file describing the result of the attempted call and the possible cause of failure The third class of failure is the transmission interruption This includes link failure during transmission cancellation of transmission and preemption for priority messages These types of failures do not usually indicate that the site has gone down It will usually be sufficient to retry the connection after a short delay and continue transmission at the point of interruption If the remote site has in fact gone down the failure will be detected and handled as a class 2 failure as described above The TACCNET prototype detects and handle each of these classes of failures Because of certain hardware limitations it does not have the desired degree of resolution for class 2 failure diagnosis It does recognize login and startup failures as well as transmission interruptions Log files are maintained for each site showing the history of contacts and messages transferred A system table is kept for the sites to monitor site status and contact times Another table is used to monitor local port activity 3 1 4 Database Backup and Recovery Since the CSS environment can be volatile and nodes may be destroyed it 1s desirable to build into the network the capability to back up and restore im por tant i
342. e couldn t stay length MYEOT sent an EOT if TempBuf NULL free TempBuf return NULL if MasterMode amp amp Abort SendByte CAN Tell remote we were terminated getblock c Oct 30 10 51 1986 Page 8 length MYCAN Sent a cancel must delete temp file if TempBuf NULL free TempBuf return NULL Exit gracefully if TempBuf NULL We have an error i sleep 2 Wait 2 seconds attempted error recovery FlushModeminput ModemFd RetryCount Consider TIMEOUT to be very bad WriteLog GetBlock timed out on GetPacket um ifndef FORHONEY SendByte ACK try to recover amp get in sync fendif continue Go back to main loop and try again if PackLen 3 i if TempBuf 0 EOT Empty transmission switch modes i length EOT Set error condition to EOT received free TempBuf return NULL Return error condition j else if TempBuf 0 CAN Remote had to abort cleanly length CAN Set error condition to CAN received x free TempBuf return NULL Return error condition else Phase error etc FlushModeminput ModemFd RetryCount Note the failure SendByte improper control information WriteLog GetBlock improper control info sent free TempBuf else if PackLen lt 3 sleep 2 wa
343. e eventually resolved 5 7 March 1986 Work continued on the Honeywell PASCAL to C conversion Modification of low level I O routines was complete and testing began The next phase involved the conversion of directory and file handling routines Problems with the port configuration and the modems hampered progress but were resolved The C program linker for GCOS still refused to link moderate to large pro grams Help from Honeywell produced a workaround solution which required the user to interrupt the compilation and manually edit the linker control file to set certain link parameters before restarting the link process This allowed us to link the programs but was a severe inconvenience and was regarded as a temporary fix The database backup and recovery functions were completed and tested Cod ing began for the incremental database from archives A scenario was devised to demonstrate the system Coding for the JINTA CCS message composition tool was completed The pro gram was debugged and some cosmetic changes were made The program was incorporated into the TACCNET system as the primary user interface for mes sage creation 5 8 April 1986 Development proceeded on the message processor routines to recover JIN TACCS messages from site archives These messages were to be re queued for transmission to a specified site for use in reconstituting that site s C database Functions for the regular backup and recovery of the
344. e period were solely in the category of salaries Salaries of professional research personnel are clas sified as Professional Expenses Salaries of student assistants are classified as Staff Expenses A breakdown is given below Professional Expenses 4 500 00 Staff Expenses 1 560 00 Total Expenses 6 060 00 Work Completed Item Complete C2 Database Backup and Recovery system design 95 Initial code development 100 Remote backup system 60 Database recovery 30 Archive search amp retrieval 10 Alternate database site operations 60 lesting and integration 10 Work for Task 1 45 DPS 6 PASCAL to C Conversion Source code transfer 100 IOControl system 80 Caller 75 GenMsg 0 Integration with TACCNET 20 Work for Task 2 30 Technical Specification 5 Performance and Cost Report Contract Number DAHCO06 85 C 0012 Project Number G 36 633 Ceorgia Institute of Technology February 1 1986 to February 28 1986 Overview The PC AT with the hard disk problem was repaired and reins talled It is once again operational TACCNET The latest version of has been installed on the two PC AT systems xenics and xenair one ONYX system sysa and the TACCS taccs DISTRIX system This version contains a robust login procedure database backup system broadcast messages and improved error logging The JINTACCS message compostion tool is nearing completion It now allows the user two operate in command or editing mode an
345. e program Provide a user interface to the TACCNET system including constant display of system logs and message flow permitting on demand examination and hand processing of messages The interface is screen oriented utilizing the curses software package for full terminal compatibility Usage console taccnet root options int CurScreen SWINDOWS Which screen to update windows or status main argc argv int argc char argv int i int Exit FALSE Local exit flag int Function Local function request indicator int ExitProcessor nterrupt handler signal SIGINT Exi tProcessor Define interrupt service routine SysName argv 0 Global system name pointer StartUp argc argv Process start up options and init data Ini tWi ndow Initialize main window and menu while Exit Update all windows before processing command if CurScreen SWINDOWS for 1 0 i lt MAXWINDOWS j if GoodWindow i Update i Update windows only if defined else Status TRUE Monitor system status tier 2 sel 6 Function GetMenu Get menu selection item if Function gt 0 Perform Function 1 Perform requested function Exit Function 0 Determine exit condition CloseWindows Prepare to exit exit 0 console c Oct 30 10 51 1986 Page 18 int ExitProcessor Cl
346. e server by defining the appropriate userid in the system password file ELT TACCNET G36 633 Final Technical Report April 28 1987 4 14 Portability The TACCNET software is written in the C programming language under the UNIX operating system Great care has been taken to avoid hardware depen dencies and operating system version dependent features The system has been compiled and run under the following different operating systems IBM PC IX 1 0 IBM XENIX 2 0 ATT UNIX System ATT UNIX System Vr2 GCOS ONYX 4 15 JINTACCS messages to and from C database The system provides the capability to generate JINTA CCS messages automati cally from data contained in the prototype database The system can also receive JINATCCS messages and used them to automatically update informa tion the the database C database is a collection of relations in a UNIFY relational database schema 4 16 Automated JINTACCS message composition interface The system provides a JINTACCS message composition interface to assist users in composing JINTACCS messages for transmission by the system The tool uses the on line JINTACCS message dictionary to prompt the user for the necessary data and format the data into a valid JINTACCS message The user may view the message at any stage of the composition Upon completion the message may be edited transmitted or saved in a file 4 17 Distributed C database backup and
347. e signal from master Time out after specified retry limit is exceeded int SendEnq 0 i unsigned char Buffer Response buffer allocated by GetPacket int RetryCount 0 Counter for number of retries int Length Response buffer length not used FlushModeminput ModemFd Clear input buffer before sending ENQ while RetryCount lt MaxRetry SendByte Transmit enquire signal if Buffer GetPacket amp Length NULL if DebugLevel WriteLog SendEng Timed out waiting for 1 else if Buffer 0 ACK break Response was good systems are in sync else free Buffer release storage FlushModeminput ModemFd Get rid of possible extra characters if RetryCount gt MaxRetr y WriteLog SendEng timed out awaiting contact with master Exit LOSTCONTACT free Buffer release storage sendfile c Oct 30 10 51 1986 Page 32 include net h inelude iocontrol h include iocontrol e extern pathname QueueName Reference semi global variable extern int CheckBetween extern int BlockLength Block size in a packet in bytes extern int HoneyBlock SendFile send a file to the remote system breaking it into certain sized blocks for better error detection Also preserve original file name int SendFile filepathname messagename pathname filepathname char mes
348. e system Improved login handling and broadcast message handling were developed Error logging and message tracking systems were improved Other planned improvements to TACCNET included screen editing capability for messages console monitoring facilities for network observation message display utilities for demonstrations robust login procedures and administrative utilities The Honeywell GCOS C compiler was ordered and was expected to arrive in October Preparations were made to transfer all TACCNET source code from the IBM PC AT to the Honeywell DPS 6 Substantial changes were expected to be required in the I O routines due to differences between UNIX and GCOS Design work began for the database backup and recovery system It was expected to involve a combination of shell scripts and functions Modifications to the Message Processing system were required 5 2 October 1985 A task plan for the project was prepared and presented to AIRMICS Work areas included UNIX GCOS conversion of TACCNET JINTACCS message preparation facilities C database backup and recovery and TACCNET user interface development Design work continued on the 21245858 backup and recovery system The sys tem was to use a prototype C database implemented using the UNIFY rela tional database management system Ihe system was intended to allow a CSSCS node to transmit a copy of its database to another node for storage and then retrieve that cop
349. e to new table file replacing designated site data c getc SiteTableFd while c EOF i putc c NewSitesFd if c FIELDMARK then we are at a site entry line fscanf SiteTableFd s SiteName get the site name fprintf NewSitesFd 5 SiteName go ahead and copy it if EQUALS SiteName TargetName then we replace the oid data while cegetc MsgFd EOF copy new site data pute c NewSitesFd while c gete SiteTableFd FIELDMARK skip old data SkipEOL SiteTabieFd ungetc SiteTableFd reset input stream WriteLog ChangeSite SiteName has been changed getc Si teTableFd felose NewSi tesFd fciose SiteTableFd changesite c Oct 30 10 51 1986 Page save current site table as sites old unlink OLDSITETABLE FRename SITETABLE OLDSITETABLE replace current table with new table FRename NEWSITETABLE SITETABLE UnLock SITETABLE return GOOD deletesite c Oct 30 10 51 1986 Page include net h int DeleteSite Fd FILE Fd DeleteSite Read site name from the stream Fd look it up in the site table If found deactivate the site by changing the site delimiter FIELDMARK to a DELCHAR so that ValidSite won t see it FILE SiteTableFd register int c n 0 long StartOfLine sitename Site sitename TempBuf SkipEOL Fd skip down to site entry
350. eFd register int Result register int c n 0 long StartOfLine sitename Site sitename TempBuf int Status SkipEOL skip to beginning of site entry fscanf Fd amp Status Site read the site name from the file if DebugLevel 2 WriteLog ActivateSite activate site Site if Lock SITETABLE ERR WriteLog DeleteSite Can t lock SITETABLE exit 1 if SiteTableFd fopen SITETABLE NULL WriteLog DeleteSite Can t open SITETABLE UnLock SITETABLE return ERR indicate failure find the desired site and reactivate it while c getc SiteTableFd EOF Start fLine ftell SiteTableFd long 1 fscanf SiteTableFd s TempBuf get a site name if EQUALS TempBuf Site it is the one we seek i if DebugLevel WriteLog ActivateSite site Site found in SITETABLE switch c activatesite c Oct 30 10 51 1986 Page 5 case DELCHAR fseek SiteTableFd StartOfLine 0 reset fprintf SiteTableFd FIELDMARK make site active WriteLog ActivateSite Site has been activated Result GOOD break case FIELDMARK i WriteLog ActivateSite site Site already active Result 0000 break default WriteLog ActivateSite Invalid site entry for Site Result ERR break fclose SiteTablefd UnLock
351. eLog SetPort Can t open PortName return ERR if ioctl ModemFd TCGETA amp TTYSet ERR get old modem settings i WriteLog SetPort Can t get old modem settings from PortName un mui return ERR TTYSet c iflag amp INPCK TTYSet c iflag amp ICRNL TTYSet c iflag amp IXON TTYSet c iflag amp IXOFF ifdef FORHONEY TTYSet c iflag I STRIP felse TTYSet c_iflag amp ISTRIP fendi f ifdef FORHONEY TTYSet c cflag PARENB TTYSet c cflag PARODD TTYSet c cflag amp CSIZE TTYSet c cflag CS7 felse TTYSet c cflag amp PARENB TTYSet c cflag amp CSIZE TTYSet c cflag CS8 fendi f TTYSet c cflag amp CBAUD TTYSet c cflag B1200 TTYSet c cflag j CLOCAL TTYSet c cflag HUPCL Don t check input parity Don t convert CR to NL enable parity even parity clear character size field Set 7 bits data disable parity clear character size field Set 8 data bits no parity parity Clear old baud rate bits Set baud to 1200 assert DTR and RTS to modem hang up on last close setport c Oct 30 10 51 1986 Page 40 TTYSet c lflag amp ISIG gnore QUIT and INTR sigs TTYSet c lflag amp 1 Don t want canonical input TTYSet c lflag amp ECHO No echo
352. eed to forward mail UnLock SysName 5 caller c Oct 30 10 50 1986 pages ERR if pes fork ERR WriteLog Caller cannot fork Goodbye n umm UnLock SysName quit ERR if pid 0 am the child i OCONTROL does the transmitting and receiving if Site gt SysType GCOS sprintf lOControl 55 55 BIN IOCONTROL else sprintf lOControl s s BIN OCNTRLH if DebugLevel exec lOControl lOControl SysName PortName argv 3 0 Pass debug level information else exec lOControl lOControl SysName PortName 0 WriteLog cannot exec lOControl Goodbye UnLock SysName exit ERR wait amp Status wait for IOCONTROL to complete if Status w S w Stopval WSTOPPED This was bad error IOCONTROL did not exit cleanly WriteLog lOControl aborted unexpectedly 1166 if DebugLevel WriteLog Caller unlocking SysName if UnLock SysName ERR WriteLog Caller could not unlock SysName queue quit ERR else switch Status w T w Retcode case GOOD if DebugLevel WriteLog Caller Conversation with SysName complete break case INTERRUPTED WriteLog Caller Interrupted during conversation with SysName IntFlag TRUE Set interrupt flag for later Construct interrupt file name to re
353. efined by site in net h If the site is not found in the table it returns NULL FILE SiteTableFd site Si teEntry register int c n 0 long Start pathname TempBuf if Lock SITETABLE ERR ValidSite Can t lock SITETABLE 88 return NULL if SiteTableFd fopen SITETABLE NULL RR ValidSite Can t open SITETABLE 8 UnLock SITETABLE return NULL indicate failure skip down to beginning of first site entry while c getc SiteTableFd FIELDMARK SkipEOL SiteTableFd do Start ftell SiteTableFd save pointer to start of entry fscanf SiteTableFd 55 TempBuf get a site name if EQUALS TempBuf Site it is the one we seek i fseek SiteTableFd Start 0 reset file pointer SiteEntry ReadSite SiteTableFd read in the site entry fclose SiteTableFd UnLock SITETABLE return SiteEntry return pointer to the site structure else do 1 getc SiteTableFd read first character while c FIELDMARK amp amp l EOF while c EOF fclose SiteTableFd UnLock SITETABLE return NULL indicate site not found writelog c Oct 30 10 50 1986 include net h extern pathname Logfile int WriteLog Pl P2 P3 char Pl P2 P3 FILE LogFd char Date 26 register int i70 DateTime Date if
354. eive o receive o cc 0 c DFORHONEY receive c cp receive o receiveh o rm receive o mv receive o receive o archive o archive c net h cc 0 c archive c putsite o net h putsite c c 7 0 putsite c abort o net h abort c cc c 0 abort c iocontrol e Oct 30 10 50 1986 Page 3 Global variable descriptions extern int ModemFd Current file descriptor for modem port extern int SeqNo Current packet sequence number for transmit or receive extern int DebugLevel Runtime debug level 0 normal extern int MasterMode Flag indicating that IOCONTROL invoked as master x iocontrol h Oct 30 10 50 1986 Page mode definitions for iocontrol c def ine HANGUP define MASTERINIT 0 define SLAVEINIT 1 define SENDMODE 2 RECEIVEMODE 3 error codes and corresponding messages for exit 2 system call include retcodes h miscellaneous constants define 2000 define MAXRETRY 10 define MAXDELAY 10 Maximum length of a packet Maximum retransmits or re receives Maximum wait time for incoming character ifdef FORHONEY define BLOCKLENGTH 64 Number of characters in a block felse define BLOCKLENGTH 140 fendi define ETXOFFSET 7 PKTOVERHEAD 14 6 define REJECT 2 Position of etx etb char in received packet Overhead for control information in a packet Reject retu
355. elational database for storage and retrieval of command and control information Sup port for other JINTACCS messages can be added by entering the message for mat into the message data dictionary stored in the relational database The database can be backed up over the network to another node and retrieved as needed A single node can simulate multiple nodes in the network if needed taking the place of a down or destroyed node The hardware and software requirements for the prototype system are described in detail below Installation and configuration information is also provided The system has been tested on IBM Burroughs and ONYX systems and should be easily portable to any computer running the UNIX operating system All of the code is written in the C programming language Some user com mands actually shell command scripts written in the Bourne shell command language 34 TACCNET Technical Specification November 14 1986 4 1 TACCNET System Requirements In this section the hardware and software requirements for the TACCNET software are defined The system was designed and developed with portability aS a major concern and should be easily ported to any machine using the UNIX System III operating system or one of its derivatives 4 1 1 Hardware The TACCNET software has been installed and tested on ONYX and IBM PC AT computers These machines were used to simulate the TACCS system The system requires at least
356. elease storage return NULL Good result Page getpacket c Oct 30 10 51 1986 Page include net h include iocontrol h include iocontrol e GetPacket retrieve a packet control information or data from the remote system allocating storage for it and return a pointer to the caller who will release storage when done unsigned char GetPacket length int length Return parameter is length of packet in bytes 16 unsigned char TempPacket MAXPACKET Allocate static storage for now unsigned char Ptr Pointer for allocated storage when ready unsigned char c Character received from modem int RcvByte int Remember FALSE Flag to say if last character was DLE ifdef DEBUG FILE tmp fopen usr taccnet log proto log fendif ifdef DEBUG fprintf tmp Response t n fflush tmp fendif length 0 while RevByte Receive ERR unsigned char RevByte amp Oxff ifdef DEBUG fprintf tmp 2x c ff lush tmp fendif if Remember amp amp EM This is the end of the message TempPacket length c Receive Read the CR break Get out of this infernal read loop if length 1 gt There will be no room for EM WriteLog GetPacket packet received is too big for buffer
357. ell version other versions set parameters Sets global variable ModemFd to new file pointer or ERR if modem cannot be opened xj if ModemFd open PortName 0 RDWR ERR WriteLog SetPort Can t open PortName return ERR return ModemFd EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt STATE C TIME 1987 02 12 1723 23 5 finclude net h This routine will check to see that the site entry pointed to by Site is not declared down If it is the routine will look at the TimeToCall field and see if it is time to try again 5 int State Site returns the value of Site gt Status UP RETRY or DOWN site Site if Site gt Status UP if NOW gt Site gt TimeToCall Site gt Status UP Site gt TimeToCall 0 return Site gt Status EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt STRIPM C TIME 1987 02 12 1723 49 4 finclude net h char StripMe Path FirstSite char Path FirstSite Removes the first site name from Path and returns a pointer to the rest of the path If there is only one site name left in Path a NULL is returned Path is not altered and FirstSite points to the site name that has been stripped off the front of the path register int i 0 while Path il SEPCHAR amp amp Path i 7107 FirstSite i Path i 1 FirstSite i 7107 return Path i 7
358. elopment 100 Remote backup system 100 Database recovery 100 Archive search amp retrieval 75 Alternate database site operations 80 lesting and integration 70 Work for Task 1 85 DPS 6 PASCAL to C Conversion Source code transfer 100 IOControl system 95 Caller 80 CenMsq 5 Integration with TACCNET 55 Work for Task 2 65 Technical Specification 10 Considerations in the Design and Development of a Combat Service Support Computer System by Principal Investigator Alton P Jensen Professor Project Manager William O Putnam Research Scientist II Project Staff Steven L Goldberg Research Assistant Hong S Shinn Graduate Research Assistant School Of Information and Computer Science Georgia Institute Of Technology Atlanta Georgia 30332 Presented to U S Army Institute for Research In Management Information Communications and Computer Science AIRMICS December 19 1986 Contract DAHCO 85 C00012 Research Project No G36 633 The views opinions and or findings contained this report are those of te authors and should not be construed as an official Department of the Army position policy or decision unless so designated by other docurnentation Table of Contents 1 0 Introduction eae eae 5 5 2532854592929 58 2 0
359. em modem unable to dial out and inactive phone line These conditions indicate local hardware or system prob lems and should not count against the remote site s connection history They should not be considered when trying to determine whether a remote site is up or down The proper response to these conditions will usually be to notify the operator and wait for correction of the situation The incident should be logged automatically so that patterns of performance may be analyzed The second class of failure is the remote failure This includes no answer from remote modem busy signal no carrier no login prompt from remote system and login or startup failure These conditions span a range of problems from malfunctioning hardware to invalid login id or password When the remote sys tem answers the phone but does not allow login and synchronization we know that the site is operational and not destroyed The correct action may be to keep calling or to change the login id or password for that system When there For example the D C Hayes Smartmodem employed in the TACCNET prototype does not distinguish between the busy signal and the no answer condition The Cermetek Infomate does 10 TACCNET Technical Specification November 14 1986 is no answer to the call the site may be down or destroyed and the messages may need to be rerouted If there was a busy signal it may be sufficient to wait a while and call back If th
360. em are handled automatically through retries There are however some errors that cause data files not to be transmitted or database updates not to take place These errors along with recoverable errors and status information are logged by all modules of the system to provide the operator with the ability to monitor the activity of the system f You should set your shell path environment variable to include the bin directory name so that you need not be in that directory to execute commands 62 TACCNET Technical Specification November 14 1986 All modules log status and error information to files contained in the directory log These files may be monitored using the log command which is accessi ble from the bin directory This command examines a file in the log directory continuously displaying changes to it until the user presses the defined key usually DEL to interrupt the process See the section User Interface in this document for a way to monitor multi ple log files in a screen oriented windowed fashion The following is a breakdown of the different files that can be monitored The actual filenames in the directory are of the form to log below log qms monitor the Queue Manager level of the system displaying informa tion on dispatching of callers to other systems log server monitor the Database Server level showing when updates and queries to the local database are made as well as any e
361. emFd Modem file descriptor for read 2 write 2 int SeqNo 0 Current packet sequence number pathname LogFile Global LogFile for lOControl routines pathname QueueName Name of queue from which we re reading int DebugLevel 0 Runtime debug level 0 normal int MasterMode Flag indicating if IOCONTROL was loaded as master int CheckBetween 0 Preemption flag indicating to check tween packets int TimeOut 10 Timeout in seconds for reading a character int HoneyTime 30 Timeout for Honeywell versions int BlockLength BLOCKLENGTH Size of a block of text in a packet int HoneyBlock BLOCKLENGTH Size of a GCOS block cannot exceed 64 int MaxRetry MAXRETRY Maximum number of retransmissions etc int Archiving TRUE Set automatic archiving of all messages main argc argv int argc char argv i int mode Current operating mode 0 1 2 send 3 receive int memory FALSE Used to determine hangup status pathname NextPath Complete path of any given file char NextName File name for each file read from queue si tename RemoteName Name of calling remote site int Result FILE ParamFileFp Parameter file pointer char Key 20 int Value int FirstTime TRUE Set until first file is successfully sent void ShutDown Shutdown routine Parse arguments to see if thi
362. ement and design oteven Coldberg system design and development RONG research assistant There are two professional researchers involved with the project Bill Putnam works full time as project manager and chief software designer Alton P Jensen works one quarter time as project administrator There are two students working part time on this project They carry work loads ranging from 12 to 20 hours per week depen ding on availability The hours spent on the project are classified and allocated into five categories A breakdown of labor for the period is given below Category Hours Administration 50 Planning amp Design 50 Prototyping amp Testing 110 Programming amp Debugging 188 Documentation amp Reporting 20 Total 418 Expenses Expenses for the period were solely in the category of salaries Salaries of professional research personnel are clas sified as Professional Expenses Salaries of student assistants are classified as Staff Expenses A breakdown is given below Professional Expenses 4 500 00 Staff Expenses 2 080 00 Total Expenses 6 580 00 Work Completed Item Complete C2 Database Backup and Recovery oystem design 100 Initial code development 100 Remote backup system 100 Database recovery 90 Archive search amp retrieval 5 Alternate database site operations 80 Testing and integration 60 Work for Task 1 80 DPS 6 PASCAL to C Conversion source code transfer 100
363. en extern int MaxRetry GetBlock read the next block from remote system taking care of retransmission etc Either return a pointer to good packet data along with a length or return an error code NULL with the length set to indicate reason for leaving EOT end of transmission received ERR error Return parameters length and endf lag indicate the length of data in bytes and the value of the end of text flag respectively define ENDFLAG PackLen ETXOFFSET End of text pointer is here unsigned char GetBlock length endf lag int length Return parameter for length of block int endflag Return parameter for end of text vs end text block int TempValue Result to return to caller unsigned char TempBuf Pointer to buffer returned from getpacket unsigned char BlockBuffer Buffer to return to caller with good data int PackLen Length of incoming packet int Hi scheckSum Checksum sent by remote system int MyCheckSum Checksum computed here int HisSeqNo Sequence number decoded from received packet int RetryCount Retry count before giving up on a packet unsigned char c char HisStr 9 char MyStr 9 StartOver RetryCount 0 length ERR Default return parameter while RetryCount lt MaxRetry TempBuf GetPacket amp PackLen if CheckBetween if Preemption QueueName SendByte EOT Tell remote w
364. ence The list is traversed in order if the first alter nate site is also unavailable the next one on the list is tried Courtesy copies of all message sent to alternate sites should be kept and delivered to the origi nal destination site once it has returned to operation This method implies a hierarchy of alternate sites in case of failure This is consistent with the organization of CSS and the military chain of command Without more information on the internal operation of CSS and the usage of JINTACCS messages for CSS functions we cannot determine what the hierar chy and therefore the ordering of alternate sites should be There is also the question of how many alternate sites to put on the list Should the chain stop at some point or should it continue all the way up the CSS chain of command What is to be done with a message when no alternate sites are available 3 1 2 Routing We have already discussed the issues surrounding the topology of a CSSCS net work Regardless of the type of network proposed it must be able to route message efficiently and automatically through the network The user should be relieved of the details of selecting a path and should only need to know the desired destination of his message In the case of routine or automated reports and queries the system should keep track of message origins and destinations leaving the operator responsible only for message com position or auditing TACCNET Technical Specif
365. ent of the modern Army This requires mobility and portability of all systems as well as transparency with respect to communications media CSS units will appear as nodes in a loosely connected network capable of frequently changing topology Nodes may join and leave the network at will as they change locations in the battlefield environ ment Nodes are also subject to catastrophic failure due to enemy activity 3 TACCNET Technical Specification November 14 1986 These elements of the environment require a network which is able to detect arrivals departures and failures and adjust operations accordingly The CSSCS must be able to detect errors in the routing or delivery of a mes sage and reroute the message as necessary to ensure timely delivery to an appropriate CSS unit In the event that a CSS node is rendered inoperative it will be necessary to recover its C database from a backup at another node and reconstitute the database by collecting all messages sent to the node after the backup and before the failure It may be necessary for one CSS node to perform the function of a down node taking its place in the network and carry ing out the function of the down node until that node can be replaced The modern battlefield will offer a variety of communications media including existing telephone networks microwave links optical links packet radio and other more traditional media Since it may not be possible to determine in advance
366. entifier must become part of the message and must travel with the message through the network It may be convenient to use the message t This example is taken from the Fuel Oil Lubricant field of the INTACCS POL Location message S028 Technical Specification November 14 1986 identifier as the name of the file in which the message is stored This is the case in the prototype TACCNET system The message id is then preserved as the message file is transferred to other nodes in the network In any event the unique message id allows us to retrace the trail of lost mes sages and to recover them from archives at the origin or intermediate sites Each message should be copied to an archive when it arrives at a node 3 2 5 Message Processing It is not sufficient to provide file transfer among CSSCS nodes and call that a network Functions such as error logging routing failure management and network configuration require various levels of message processing capability In this section we will describe some of the functional areas which involve the processing of messages passed by the network 3 2 5 1 Network Administration One goal for the CSSCS network is that it be dynamically reconfigurable By this we mean that the topology of the network can be modified on the fly without taking the network down Ideally this should be handled automatically by the network software without operator intervention Several type
367. er Get the header information returning to higher level if an error occurred if MsgHeader GetMsgHead MsgFileFd header NULL return ERR Try to recover Get alternate sites and verify that no error occurred reading the file Result GetAltSites MsgHeader gt DestSite AltSites if Result ERR return ERR Try to recover Scan list of alternate sites for a new destination taking into consideration those sites already attempted in the rerouting Point to the previously attempted assumedly down sites BadSites MsgHeader DownSites if DebugLevel gt 2 s x20 AltSites x NULL x fprintf stderr A 1d sXn x AltSites x for x20 BadSites x NULL fprintf stderr 14 s n x BadSites x reroute c Oct 30 10 52 1986 Page 39 while AltSites i NULL amp amp Done Prevent message looping while BadSites j NULL amp amp Found if DebugLevel gt 2 WriteLog GetAltSites comparing AltSites i with BadSites j if EQUALS AltSites i BadSites j Found TRUE else Jm if Found We didn t find the site in the list of down sites Done TRUE WriteLog ReRoute will forward to AltSites i else The site was down try another alternate site if DebugLevel WriteLog ReRoute AltSites i was down try again Found FALSE j 0 i
368. er and busy no answer We must also detect the case where the remote modem answers the phone but does not supply a carrier sig nal and the case where it answers and gives the carrier tone but no login prompt appears Each of these conditions represents a different type of failure and the system may respond differently in each case For instance the busy signal does not necessarily mean that the remote system 1s down It may suffice to call again in few minutes when the current conversation is complete We may not want to increment the retry count in the site table in the case of busy signals as we would when a call rings and gets no answer The type of modem used will determine the ease or difficulty of detecting these conditions The ideal modem should provide a different return code for each of these conditions as well as codes for connection established modem ready and connections There is some question of how to determine whether a remote node is up or down Obviously if we can contact the node it is up However just because we cannot contact the node we cannot immediately assume that it is down It may be that the line is busy as described above It may be that the system is e ird TACCNET Technical Specification November 14 1986 up but its modem is turned off or broken The fact is that we cannot deter mine that a remote node is down in any direct manner We can however establish criter
369. eractive monitor for taccnet Install and test the JINTACCS message composition tool Personnel Alton P project administration William Putnam project management and design Steven Goldberg system design and development Hong iirc arma mane mr acer ee er eee ee research assistant There are two professional researchers involved with the project Bill Putnam works full time as project manager and chief software designer Alton P Jensen works one quarter time as project administrator There are two students working part time on this project They carry work loads ranging from 12 to 20 hours per week depen ding on availability The hours spent on the project are classified and allocated into five categories A breakdown of labor for the period is given below Category Hours Administration 50 Planning amp Design 50 Prototyping amp Testing 120 Programming amp Debugging 200 Documentation amp Reporting 40 Total 460 Expenses Expenses for the period were solely in the category of salaries Salaries of professional research personnel are clas sified as Professional Expenses Salaries of student assistants are classified as Staff Expenses A breakdown is given below Professional Expenses 5 4 500 00 Staff Expenses 2 500 00 Total Expenses 7 000 00 Work Completed Item Complete C2 Database Backup and Recovery System design 100 Initial code dev
370. es Salaries of professional research personnel are clas sified as Professional Expenses Salaries of student assistants are classified as Staff Expenses A breakdown is given below Professional Expenses 4 500 00 otaff Expenses 2 800 00 Total Expenses 7 300 00 Work Completed Item Complete C2 Database Backup and Recovery oystem design 50 Initial code development 0 Remote backup system 0 Database recovery 0 Archive search amp retrieval 0 0 0 7 Alternate database site operations Testing and integration Work for Task 1 DPS 6 PASCAL to C Conversion source code transfer 50 IOControl system 10 Caller 0 GenMsg 0 Integration with TACCNET 0 Work for Task 2 10 Technical Specification 0 Performance and Cost Report Contract Number DAHC06 85 C 0012 Project Number G 36 633 Georgia Institute of Technology November 1 1985 to November 30 1985 A 77 f mE E Overview A task plan for the project was prepared and presented to AIRMICS Three work areas were identified TACCNET improvements Honeywell C conversion and database backup recovery The conversion of Honeywell DPS 6 code from PASCAL to C will begin as soon as the C compiler is received and installed other work was begun immediately The planned improvements to TACCNET include screen editing capability for JINTACCS messages console monitoring facilities for network observation message display utilities for demons trations robust login
371. essage The user will be able to examine the message at any point in the composition process The CGOS system conversion is proceeding slowly An apparent bug in the GCOS device handler causes the transmission of the DEL character as a filler in spite of configuration commands that should disable this feature The low level I O routines of the IOCONIROL module are being rewritten for GCOS while the DEL problem and the C Linker problems are being investigated hard disk failure on the PC AT Xenix system has rendered that system inoperative It will be repaired ASAP The TACCS DISTRIX system is now running TACCNET under DISTRIX 2 0 The port was accomplished without incident and the system is functioning as regular TACCNET node We are unable to run the UNIFY dbms system on the TACCS different cpu at this time It should be noted that there appears to be no way to access the internal modems on the TACCS from DISIRIX There in no mention of them in the DSITRIX documentation and no description of the UNIX uucp program TACCNET is running using two external Hayes modems Work on the Technical specification is expected to begin as soon as the contents of the spec are defined Meetings and Presentations Regular meetings were held to exchange information present results In addition planning sessions were called as needed A meeting was held to discuss the desireed content of the TACCNET Tecbnical Specificati
372. essage file with extra header filename NewFileName New message file name char MsgLine LINELEN 1 Storage for copying char ThisName Pointer to this system s name ThisName Get this site s name Create new file for forwarded message if NewFileFd NewFile NewFileName MESSAGETYPE MSGPROCQ NULL i WriteLog can t create file MSGPROCQ queue return ERR Try to recover Build a new header using the old priority Original msg priority DI fprintf NewFileFd HEADERLINE MsgPriority Path to next site fprintf NewFileFd c s n HEADERLINE NewPath Indicate this site s id fprintf NewFileFd Sc s n HEADERLINE ThisName free ThisName Then copy the old message after the new header rewind MsgFileFd Make sure it s at the top while fgets MsgLine LINELEN MsgFileFd NULL Loop to EOF i fputs MsgLine NewFileFd Perform the copy fclose NewFileFd Close the file now that it s ready FileNQ NewFileName 1 MSGPROCQ enqueue it return 6000 No errors getaltsites c Oct 30 10 51 1986 Page 14 include net h extern DebugLevel GetAltSites Build a list of alternate sites for a downed site so that a message may be rerouted to one of them These sites are read from a Backup Site Database which lists them in the order
373. essage passing In a network where nodes are expected to be mobile and to enter and leave the network at random we must provide a means for forwarding messages to appropriate nodes in the event that the designated recipient cannot be reached This means that the system must have a set of criteria for use in evaluating the state of a node in the network These criteria will be used to decide whether a node is down temporarily unavailable active or destroyed They system must be able to automatically decide whether to hold messages and keep trying to contact the remote site or to forward the messages to another site for delivery or process Ing The system must monitor the state of each node and take appropriate actions to maintain connectivity and continued operability This may require the automatic rerouting of messages to insure prompt processing It may require generation and maintenance of courtesy copies of messages for bypassed nodes So that they may be brought up to date when they return to action It may require special handling of priority messages for down nodes when it is not 8 TACCNET G36 633 Final Technical Report April 28 1987 acceptable to wait through the retry process The TACCNET prototype provides the capability to determine the state of a site and to automatically route messages around a down site while keeping courtesy copies of all messages for bypassed sites The courtesy copies are delivered when the site is succes
374. et working directory set working directory if chdir MasterQueue 0 fprintf stderr invalid directory n usage argv 0 i f posee ERR WriteLog MsgProc can t lock MSGPROCQ Goodbye exit ERR unlink ABORTFILE Remove abort before running if DebugLevel WriteLog MsgProc system debug level 1 Level if ParamFileFp fopen PARAMFILE r NULL fscanf ParamFileFp Key amp Value while feof ParamFileFp amp amp ferror ParamFileFp if EQUALS Key 11 PollDelay Value if EQUALS Key archiving Archiving Value fscanf ParamFileFp s d n Key amp Value fclose ParamFileFp if Forever WriteLog MsgProc activated in Scanner mode MasterQueue else WriteLog MsgProc activated in One Pass mode MasterQueue do non terminating process loops to scan input queue if Abort MasterQueue Check for need to abort ShutDown while NextMsgName DeQueue MSGPROCQ NULL if DebugLevel WriteLog MsgProc Next message is NextMsgName msgproc c Oct 30 10 51 1986 Page 29 switch NextMsgName 0 process messages by type indicator case ADMINTYPE Process administrative messages Result Administer NextMsgName break case SERVERTYPE give to JINTACCS message ser
375. etc usershell c Oct 30 10 51 1986 Page 60 noecho crmode 0 view c Oct 30 10 51 1986 Page 61 include console h static char DefaultEditor bin vi View Permit user to select a file within a queue window to be viewed using the defined editor During the period the file is being edited the console display will be turned off so that the entire screen may be used for the editor session This is also much easier to implement void View i char Temp 80 Storage for CmdPrompt calls int WindowNum Window number from which file will be selected int Fd File descriptor char MsgName 80 char Msg 80 Message space char Editor char getenv char malioc void ExitProcessor Declare exit routine CmdPrompt Enter window number from which message will be selected 1 2 Temp 80 if strlen Temp t WindowNum atoi Temp 1 Convert to integer if WindowNum 0 WindowNum 1 if GoodWindow WindowNum Only operate on open windows Select WindowNum Temp Select a file name into Temp if strlen Temp 0 return sprintf MsgName s s Window WindowNum Name Temp if Fd open MsgName 0 RDONLY lt 0 Try to open file sprintf Msg Message s does not exist press CR s MsgName to continue CmdPrompt Msg Temp 4 return close Fd clear refresh echo n
376. eturn QmsUp amp amp MsgUp Indicate if major components are up Rest of status display is obviously to be made to screen signal SIGINT LocalExit if Lock SITETABLE 1 i Cannot lock site table addch n Standout addstr Error StandEnd addstr can t lock site table probably left locked accidentally n addch n refresh SiteTableFp fopen SITETABLE r if SiteTableFp FILE X 0 n nCannot open site table no status is available n goto WrapUp void getc SiteTableFp Digest initial field marker addch stdscr move y COLI addstr Site move y C0L2 addstr Status move y 013 addstr Line move y COL4 addstr Messages in Queue status c Oct 30 10 51 1986 Page 53 ytti move y COLI addstr move y COL2 addstr move y 013 addstr move COLA addstr 4 while feof SiteTableFp 66 ferror Si teTableFp a move y 0 clrtoeol NextSite ReadSite SiteTableFp Read NEXT site sprintf SysLockFile 4s LCK NextSite gt SiteName move y COLI OnLine FALSE if Fd open SysLockFile O RDONLY gt 0 Lock file exists i StandOut Highlight active on line entries if GoodTermi nal for i 0 NextSite SiteName i O s 1
377. evel d else fprintf stderr usage Zs system port n argv 0 exit ERR strepy SysName argv 1 strcpy PortName argv 2 for 0 i lt strlen SysName i SysNamelil tolower SysNamelil sprintf LogFile 105 28 105 SysName if DebugLevel WriteLog Caller system debug level is argv 3 2 if WriteLog Caller port PortName not found PORTTABLE exit ERR open the modem port and make sure the modem is awake if ModemFd OpenModem PortName ERR WriteLog Caller can t open PortName to call SysName FreePort PortName exit ERR put the modem in command mode and set the switches if SetHayes PortName ERR WriteLog Caller can t configure modem on PortName FreePort PortName exit ERR FlushModemInput ModemFd if Site ValidSite SysName NULL Site is valid if Condition State Site UP if DebugLevel WriteLog Caller invoked for SysName using PortName Connected Dial Site gt PhoneNum if Connected TRUE close ModemFd if DebugLevel WriteLog Caller Connected to SysName about to log in if Login SysName Site gt Password Site gt SysType PortName ERR quit ERR if pid fork ERR WriteLog Caller cannot fork Goodbye quit errno if pid 0 I
378. ew August 1986 pp 50 63 CSSCS Advanced Experimental Demonstrations Final Technical Report for 1983 84 A Jensen W Putnam S Goldberg Georgia Institute of Technology July 1984 CSSCS Advanced Experimental Demonstrations Final Technical Report for 1984 85 A Jensen W Putnam S Goldberg Georgia Institute of Technology December 1985 va TACCNET Technical Specification Appendix I TACCNET Presentation Materials November 14 1986 CSSCS Advanced Experimental Demonstrations 1983 1986 Development of a Tactical Army Command and Control Network Objectives examine issues related to information transfer among loosely coupled occasionally connected heterogeneous asynchronous networks of networks To develop a prototype Combat Service Support Computer System and a prototype Command and Control Database to be used in the exploration of CSS information processing requirements Approach Iterative Refinement o Develop expertise o Design and build prototype o Demonstrate capabilities o Examine and refine Experimental Demonstrations Advanced Experimental Demonstration AED e Demonstrate capabilities o Highlight issues Incorporate previous work o Provide recommendations for future work End Product o Working portable full featured prototype o Documentation of issues and concerns Specification for interim fieldable system Plans Finalize and do
379. ewFile FileName Type Queue char FileName pointer to new file name int Type character to indicate message type char Queue directory in which to put the file i pathname PathName pointer to the full path name of the file char ThisName pointer to name of this site long int AbsTime ThisName MyName Get this site s name AbsTime NOW sprintf FileName c s x 4x ThisName int AbsTime amp long 0 0 0000 gt gt 16 int AbsTime amp long OxOOffff sleep 1 Ensure that clock increments sprintf PathName s s Queue FileName free ThisName return fopen PathName w now c Oct 30 10 50 1986 Page 27 include net h main printf Now 91dXn NOW ports c Oct 30 10 50 1986 Page 28 include net h void PSFree int TakePort Port Site Type char Port char Site int Type Get the port list and rewrite the PORTTABLE indicating that the named Port is being used to call the named Site with a transmission of the given Type Assume that the PORTTABLE is already LOCKED portlist PortList register int i FoundzFALSE if pem GetPorts NULL WriteLog can t read port list to mark Port in use return ERR for i20 PortListLi NULL i if Pare Port Found TRUE break if WriteLog TakePort can t find Port
380. f DebugLevel Writelog Process MsgFile has been processed if SiteEntry gt SysType EMULATED Take care of logging in this case sprintf Logfile log s log SiteEntry gt SiteName WriteLog Process FileName l sent to emulated system 0 sprintf Logfile log s log MSGPROC return GOOD putmsg c Oct 30 10 52 1986 Page 31 include net h extern int DebugLevel int PutMsg MsgName char MsgName FILE Fd pathname Path pathname Priority pathname OldName pathname NewName sitename Site open the message file and read the destination line sprintf OldName MSGPROCQ MsgName if Fd fopen OldName NULL i WriteLog PutMsg can t MsgName for processing return ERR GetLine Priority Fd GetLine Path Fd fclose Fd get the first site on the destination path Path l Site move the message to that site s queue sprintf NewName s s Site MsgName if FRename 01 NewName ERR WriteLog PutMsg can t move OldName NewName return ERR if DebugLevel WriteLog PutMsg moved OldName to NewName return GOOD recover c Oct 30 10 52 1986 Page 35 include net h include lt sys stat h gt include lt sys dir h gt define NFILES 96 Max files per directory extern int DebugLevel Recover
381. fault forwarding of messages ifdef XENIX FILE File for resetting 0 under XENIX fendi f main argc argv int argc char argv The Caller program will take a system name and a port name as input parameters It will open the named port for dialout use and check for the presence of a modem t will get the connection information on the desired system and try to establish a connection with that system If that succeeds it will call lOControl to send the files located in the directory and receive any datafiles from the remote system Received file will be given to the Message Processor for disposition Errors will be logged and the program will terminate with either a good return code 0 or a bad return code 1 a remote site is called unsuccessfully a record is kept in the site table When the number of unsuccessful attempts crosses a threshold value the site is declared down and all traffic for the site is rerouted for a period of time pathname lOControl union wait Status register int pid register int Condition register int Connected FALSE FILE ParamFileFp Parameter file pointer for retry information char Key 20 int Value int MainTimeOut caller c Oct 30 10 50 1986 Page void ShutDown Define routine for system shutdown char ErrMsg Define error message routine umask UMASK get the arguments and prepare for action
382. fer requesting site Destination been notified return GOOD fprintf PipeFd save s n SaveName while c getc FileFd EOF copy the body of the message putc c fclose FileFd if pclose PipeFd GOOD i WriteLog Transfer error executing Command return ERR WriteLog Transfer FileName will be sent to Destination return GOOD validuser c Oct 30 10 52 1986 Page 45 include net h ValidUser returns FALSE if UserName is not defined in PASSWDFILE and FALSE not necessarily TRUE if it is defined int ValidUser UserName char UserName char Name 10 assumes unix usernames are 9 characters or less char Command 80 FILE Pipe sprintf Command fgrep s 5 UserName PASSWDFILE if Pipe popen Command NULL WriteLog ValidUser can t run fgrep PASSWDFILE return FALSE fscanf Pipe s Name read the username field only pclose Pipe return EQUALS UserName Name GENMSG This section contains the functions used only by the Message Generator program GENMSG Table of Contents Thu Oct 30 10 51 24 1986 File Makefile Page File genmsg c Page 2 eoe ee MakeMessage Soccer sews eons ie des A Bul IdPath ud er cee 15 USAGE
383. fers a file exactly as it is stored Full 8 bit binary data transfer is assured by the protocol In tests the system has been used to transfer executable programs between machines for remote execution 4 3 Error detection and recovery The system uses a 16 bit checksum to detect errors in transmission Packets containing errors are retransmitted Repeated errors are logged and notification is sent to the system operator 4 4 Transaction logging and archiving All messages passing through each node are logged and copied to an archive Administrative operations and database transactions are also logged If neces sary the archives can be searched and saved messages can be retransmitted This is done when it is necessary to reconstitute the C database for a unit whose database has been lost 4 5 Bidirectional on demand links All communication links between nodes in the TACCNET network are bidirec tional Any machine can call any other machine There are no due to sp TACCNET G36 633 Final Technical Report April 28 1987 polling It is possible to configure the system so that a site is polled and does not call other sites but the normal configuration allows full connectivity Sites call one another whenever they have messages to transmit If two sites call each other at the same time the collision is detected and one of the sites will back off A site can converse with many sites simultaneously depending on the number of avail
384. figuration o Nodes are loosely coupled and occasionally connected o Machines are physically small microcomputers Comunicato links are undetermined media transparency required o On demand communication links o Time constraints priority messages o Most messages in JINTACCS format o Well defined hierarchy of nodes Why TACCNET Why not use uucp Kermit or other widely available data transfer systems o No existing product conforms to CSSCS environmental constraints rerouting failure management JINTACCS message handling time constraints priority messages observance of node hierarchy etc Why UNIX Advantages o Availability on many different architectures Portability many machines in desired size class o Good environment for software development o Convenient file structure i e directories as queues o Process control and inter process communication O Multi user multi tasking system o Standard portable high level language C Disadvantages o Unix is a moving boundary o Not friendly to naive user o Many variants in distribution o Missing features such as file locking o Security TACCNET Capabilities and Functions o Heterogeneous communications Media transparency Error detecting protocol with retransmission Logging of connections errors and message transfers Bidirectional on demand links Tunable parameters i e speed packet size retry delays
385. fined before the sys tems are implemented so that efforts are not wasted or duplicated In the discussion below we assume that the development environment for the CSSCS is that of the UNIX operating system or one of its derivatives The issues discussed however are not unique to UNIX based systems 3 2 1 1 Interprocess Communications The number of separate but related functions to be performed by the CSSCS suggests that a group of asynchronous communicating processes be employed This allows work to be distributed by function and to be performed more efficiently A simple system could include a process to monitor incoming mes sage traffic and schedule communications contacts a process to initiate and exe cute an individual communications link and a process to receive and process incoming messages These processes would all be active at the same time and would need to communicate and share data The UNIX operating system does not provide sophisticated interprocess com munication facilities but it does provides processes with the ability to spawn other processes and to communicate with them in a limited fashion A good example of this is found in the communications system of the TACCNET proto type The top level process qms monitors system message queues and schedules calls to remote sites as needed When it schedules a call it spawns a new process known as a caller and passes information about the nature of the call to that process T
386. free text The set handler calls the field handler for each set to retrieve the collection of fields in the set The field handler calls the dfi handler to get the dfi data field identifier level Information The dfi handler supplies for a particular dfi the field descriptor or column header according to the type of the set the data format and left right justification At each level in the message structure hierarchy the user is asked to respond to system prompts for options or input data 4 2 4 4 1 List Handling Module In the list handling module each message is held in the multi level doubly linked lists and modified dynamically at the user s command The message level set level and field level information is kept in level 0 level 1 and level 2 lists respectively A linked list is created at message creation time and its sub leve lists can be added updated and deleted on a real time basis This is of importance in the screen oriented editor to be implemented in the next stage 53 TACCNET Technical Specification November 14 1986 of the system 4 2 4 4 1 Message Display Module The system gets the data from the linked lists and displays them on screen with indentations according to the level of lists In later versions this will be part of screen oriented editor 4 2 4 4 1 Message Format Converter This system gets the message data from the linked lists and produces a message in JINTACCS format Informatio
387. from the free text set list convtsnode ptr tsnode ptr int kz0 wprintw view fprintf WP imgf whi le ptr tstext k wprintw view win 5s ptr tstext k fprintf imgf s ptr tstext k kt i i if is last line view win touchwin view box win wrefresh view box win getyx command win LINE COL wclear msg win wprintw msg win Press SPACE Bar for More wrefresh msg win wgetchar msg we lear view win wrefresh view win wclear msg win wrefresh msg wmove command win LINE COL wrefresh command win else fprintf WP imgf Nn is last line win form c Oct 30 10 51 1986 WINDOW win int L getyx win L C if L win maxy 1 return 1 else return 0 Page 21 jms c Oct 30 10 51 1986 Page 22 Sinclude def file h define MAIN inelude jms h E file name jms c This file includes main program and subroutines accessing Database external definitions for global variables WINDOW box win WINDOW win WINDOW maincom win WINDOW command win WINDOW msg win WINDOW view box win WINDOW view win WINDOW help
388. function char DirEntry Pointer to directory entries register int Num 0 char Entries Returned vector containing directory entries Entries char malloc NFILES sizeof char Call Honeywell specific routine to get directory listing DirEntry star name Dir Match all file names for now while DirEntry 7107 Entries Num malloc strlen DirEntry 1 strcpy Entries Num DirEntry DirEntry strlen Entries Num l 1 Bump pointer past name if Num gt 0 Sort Entries Num Entries Num 7107 Set the last one to NULL return Entries else return NULL Sort Entries Num filename Entries int Num register int Gap i j filename Temp for Gap Num 2 Gap gt 0 Gap 2 for i Gap i lt Num i for j Gap j gt 0 j Gap if stremp Entries jl Entries j Gapl lt 0 break strcpy Temp Entries j1 strcpy Entries j Entries j Gap strcpy Entries j Gap Temp EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt ENDSWI C TIME 1987 02 12 1605 28 0 finclude net h int EndsWith String Target char String char Target while Target 7107 if EQUALS String Target t return TRUE return FALSE EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt FILENQ C TIME 1987 02 12 1605 43 9 include net h FileNQ Make a file name
389. g the POL Location message in a request 13 Send the request message to the S amp T Battalion 14 S amp T Battalion responds to DYMU automated query by automatically sending message with new locations 15 DMMC receives the from the S amp T Battalion and charges its data base 16 Manual query at DMMC verifies the change 17 DMMC node goes dawn 18 Change manually the FOL location data at the S amp T Battalion and the FSR 19 S amp T and FSB formulate their messages using push a button method and attempt to send to DMMC After determining that DMMC is down FSS and S amp T send their messages to SFO as an automatic reroute SHO receives messages SPO updates its data base 23 5 0 displays data on screen in response to on line cuery by operator 26 SPO determines that DMNC was bypassed and sends cornsalidated FOL Location messape to FSB posts data to cata base upor receipt c6 FSR displays cata om screen upon demand on line query 27 DMMC returns to operational status 28 FSH and S amp T send courtesy copy of message to DMMC 29 DMMC posts its data base autematically using new data 30 GQn line query verifies new data at DMMC i INCLOSURE 1 JINTACCS MESSAGE FORMATS 11 ALUS A3 5UU UUJS June 1984 MESSAGE INSTRUCTIONS Page 1 of 3 MESSAGE NUMBER S006 TITLE Casualty Information Report CASSTATS GENERAL INSTR
390. g code was shown to have greater functionality then the original The implementation in C was taken straight from the UNIX systems The C source code was transferred from the PC AT running XENIX to the Honeywell GCOS system using the ori ginal TACCNET system for file transfer The C code was then modified to allow for GCOS file system dependencies and the resulting source was compiled The complete source for the system compiled without error almost immedi ately but some bugs required additional work A major handicap to progress this task was presented by the Honeywell compiler The compiler was very green and contained a number of bugs and design deficiencies The problems are described in the Summary of Activities below The deficiencies were eventually overcome by means of workaround solutions and the problems were reported to Honeywell It is the opinion of the project staff that the Honeywell C compiler needs some serious work before it is a viable program development tool In the end the TACCNET implementation on the Honeywell was completed and the system was used as a node in the testbed network Files and message were exchanged between the Honeywell and the other systems in the network The IOCONTROL CALLER and GENMSG programs were implemented on the Honeywell system This allowed the Honeywell to answer the calls from Ud s TACCNET G36 633 Final Technical Report April 28 1987 other systems and to call other systems an
391. g systems for open evalua tion 5 9 Conclusion The term of the project was concluded with successful demonstrations of the results of Tasks 1 and 2 and with a presentation at the August 1986 Joint IPR hosted by AIRMICS These presentations are described below 99 TACCNET G36 633 Final Technical Report April 28 1987 6 Demonstrations and Presentations Two Advanced Experimental Demonstrations AED and one In Process Review IPR were conducted during the term of the project In this section we will describe the activities and results presented 6 1 Advanced Experimental Demonstration 1 Advanced Experimental Demonstration 1 was the culmination of Task 1 of the work statement This demonstration presented the results of an examination of the issues of maintaining updating and restoring a distributed database in the presence of communications failures and node failures in the CSSCS network The previously defined TACCNET prototype system was expanded to allow interaction between a prototype Command and Control database and the JINTACCS messages being passed by the system The prototype C database was derived from the set of messages to be used in the demonstration scenarios The database consisted of a set of relations in a schema defined under the UNIFY relational database management system The relations were developed by studying the JINTACCS messages and normalizing the data ele ments from these messages into coherent
392. ge passing and failure detection the prototype system addresses the issues of automatic mes sage routing dynamic network reconfiguration remote node identification net work security message generation and processing database interactions and database backup recovery The CSSCS environment is described as a loosely coupled occasionally connected network of independently operating computers By occasionally connected we mean that nodes in the network may come and go at will under normal operat ing conditions In addition the CSSCS environment is conducive to catas trophic node failures of network nodes The necessity of mobility and risk of destruction are unavoidable features of the battlefield environment in which the CSSCS will operate Node failures must be detected and handled by the system with a minimum of human intervention Development of the prototype system was done under the UNIX operating system UNIX was chosen because of its wide availability in the class of small machines being considered for use by the Army as the TACCS UNIX provides full featured multi tasking multi user environment conducive to the develop ment of software It is well supported in a variety of hardware environments including personal computers minicomputers and mainframes The C pro gramming language standard on all UNIX systems is a powerful high level language incorporating structured programming features flexible data structures of al
393. ges Only two levels of messages are recognized priority messages and routine messages Priority messages get fastest possible service while routine messages are served on a first come first served basis In a fielded system there will probably be a need for more different levels of priority but we do not know at this time how many or what types of service they would require 3 1 3 Alternate Sites In the event that a node is down and cannot be reached what is to be done with messages for that node Some messages are routine reports and can wait until the site returns to action and calls for them but others especially priority messages may require fast or even immediate action With this in mind the TACCNET prototype uses a table of designated alternate sites for each node in the network to re route messages targeted for inactive sites The method used is to keep a list of sites which can take over the processing of important mes sages during the node s absence The list is traversed in order if the first alter nate site is also unavailable the next one on the list is tried Courtesy copies of all message sent to alternate sites should be kept and delivered to the origi nal destination site once it has returned to operation This method implies a hierarchy of alternate sites in case of failure This is consistent with the organization of CSS and the military chain of command Without more information on the internal operation of
394. gin 99 9 999 90 99 9 99 99 9 5 99 16 File openmodem c Page 19 OpenModem Sad esos EL dos Su ae 19 File readstr c Page 21 ReadStr 9 99999 e 9 e 5 9 21 GetStr EE EE EE EE EE SE EE 9 9 995 9 9 CeBHD a 21 File sethayes c Page 22 SetHayes 94 99 9999 99 999 9999 999059979 22 Makefile Oct 30 10 50 1986 Page caller caller o givetomp o checkdown o dial o validsite o putsite o openmodem o getdir o dequeue o state o hangup o writelog o frename oN lockfile o readsite o readstr o datetime o receive o sethayes o login o myname o fileopen o ports o getprompt o endswith o errmsg o o caller caller o givetomp o checkdown o dial o validsite oN putsite o openmodem o getdir o dequeue o state o hangup o writelog o frename o lockfile o readsite o readstr oN datetime o receive o sethayes o login o myname o fileopen oN ports o getprompt o endswith o errmsg o strip caller caller o net h caller c sysdef h wait h retcodes h cc c 0 caller c checkdown o net h checkdown c 0 checkdown c dial o net h dial c cc c 0 dial c openmodem o net h openmodem c 0 openmodem c hangup o net h hangup c c 0 hangup c readstr o net h readstr c cc c 0 readstr
395. given name The desired file will be built into a save administrative message and sent to the given taccnet site for processing Use the priority of the request message If the file cannot be sent send an error message If no path is given sent the file to the request origin site If no target file name is given use the source file name Message will be addressed to Network Administrator process at destination site int Transfer Fd FILE Fd int Priority register int c FILE PtpeFd FILE FileFd pathname Command pathname FileName name of source file x pathname DestPath taccnet pathname of target file pathname Origin request message origin site pathname Address complete taccnet address for response message char SaveName pointer to name of target file char Destination pointer to destination site taccnet path char ThisName pointer to name of this site ThisName MyName Get the name of this computer skip to start of parameter list while getc Fd read the desired file name and destination from the command line DestPath O 0 in case destination is omitted fscanf Fd Zs s FileName DestPath rewind the file and read the message priority and origin site rewind Fd fscanf Fd amp Priority SkipEOL Fd skip to destination line SkipEOL Fd skip to origin line fscanf
396. gproc processing Database Operations jms message composition server messages into C2 DB build messages from C2 DB User Interface console system administration Communications Runsin background sleep or cron Scans priority queue first then system queues in order taken from site table Invokes caller Handles preemption for priority messages CNN Communications caller Validates site information Establishes connection Handles connection failures Starts iocontrol process Handles transmission failures Releases port and system queue Updates site table Communications iocontrol Transmits receives files Gets files from system queue Puts files into message processor queue Error detection correction Priority preemption Data transparency binary data transfer msgprocq i iocontrol 1200 bp DEE Communications Transmission Protocol Similar to BSC Stop amp Wait Window 1 o Data packets control packets O ASCII control codes DLE STX ETX ETB EM EOT ACK NAK CAN Data Link Escape Start of Text End of Text End Text Block End of Message End of Transmission Acknowledge Negative Acknowledge Cancel O Packets punctuated with CR for GCOS Communications Packet Formats o Data Packets 12 bytes for frame text block is variable length
397. gram The linker for the C compiler contains a bug which prevents programs larger than a few Kbytes from linking We called in to Honeywell and spoke with them about a fix In the mean time we began making neces sary changes that we already knew about in the device dependent parts of the system Work proceeded on the database backup and recovery system for TACCNET The system was designed to allow the C database files used by UNIFY to be transferred via TACCNET to a designated backup site for safekeeping The files were to be stored in a special backup directory on the remote machine and retrieved automatically by sending a special network administrative message The user was to be insulated from the actual administrative messages required to back up and recover the files by set of shell scripts which would be invoked as command files The briefing scheduled for Dec 18 was canceled and rescheduled for a later date Bill Putnam prepared a high level presentation on TACCNET to supple ment the existing technical briefing 9 5 January 1986 The C functions and shell scripts for the database backup function were installed and tested Code to allow the distribution and handling of TACCNET broadcast messages was in development Broadcast messages are those which are sent from one site to all other sites in the network This type of message was to be used to send out requests for database recovery from archived messages It could also be
398. gt parent dptr k gt next node k strcpy node k gt csdata str puris node k fptr fptr gt next end of for end of while Test if the columnar set has some data in it fptr ptrl uval cschild while fptr if fptr gt fchild NULL fptr fptr gt next else LIVE TRUE break add c Oct 30 10 50 1986 Page if LIVE Inode ptr Add a node for the free text set oe an ane LG a an Gn an GD add ts node freetxt char freetxt i tsnode ptrts ptrts tsnode malloc sizeof tsnode ptrl uval tschild ptrts ptrts gt parent ptrl ptrts gt tstext freetxt 11 ams c Oct 30 10 50 1986 Page 12 Sinclude def file h fdef ine MAIN include sysdef h include ams h external definitions for global variables int col 2 0 number of columns for indentation int pos int DEAD Indicator for no text in the free text set int getout char ALIAS 11 Short Message Title char 1 message number char X TITLE 31 message title char FDESC 9 char 41 data field identifier char FDESC 9 char 5 01 18 start column char 25 11510 head listO ptrO listl ptrl snode taills ptrpos csfieldnode tailcsf csdatanode tailcsd tsnode tailts f Je sede fede dese fede fee ye dee ye x
399. h using units and logistics activities Using units would report supply shortages to their supporting logistics activity Logistics activities could also use this format to report critical shortages to command and higher level logistics activities The AMPN set can be related to individual items in the 6KSHTSUP set through correlation with the CMNT field Special comments related to individual items can be conveyed in the AMPN set The sets EXER through NARR are prepared in accordance with the message instructions for the initial main text sets SPECIAL INSTRUCTIONS Set Identifier DTGM M Field 1 As of Date Time M Enter the date time date hour and minute of the effective time of the report DFI C914 DUI A25 Set Identifier UNITIDM M Field 1 Unit Designator M Enter the unit designator of the unit making the report using either DFI C095 DUI 001 DFI 987 DUI 005 Set Identifier 6KSHTSUP M Field 1 Logistical Support Item M Enter the logistical support item in short supply DFI C460 DUI 001 Field 2 Report Comment 0 This field is used to designate if the specific item is on requisition to provide the requisition document number and to identify a specific item for reference in the following AMFN set Enter A2 if the item is not on requisition Enter Al if the item is on requisition The requisition document number may be added immediately following the Al entry 150
400. handled by the system with a minimum of human intervention Development of the prototype system was done under the UNIX operating sys tem UNIX was chosen because of its wide availability in the class of small machines being considered for use by the Army as the TACCS UNIX provides a full featured multi tasking multi user environment conducive to the develop ment of software It is well supported in a variety of hardware environments including personal computers minicomputers and mainframes The C pro gramming language standard on all UNIX systems is a powerful high level language incorporating structured programming features flexible data structures of almost any desired level of complexity and systems programming features for simple access to UNIX or to other processes Because the CSSCS environment requires real time response to changing condi tions and due to the unpredictable nature of communications in that environ ment a robust flexible timesharing system is desirable The UNIX operating system provides these qualities and offers a greater degree of portability among different types and sizes of machines than any other system currently available During the course of the project a series of Advanced Experimental Demons trations AED were conducted These are described fully in section 6 AED 1 demonstrated backup and recovery of the C database via TACCNET AED 2 demonstrated the C language TACCNET implementation on the Ho
401. handler int VALIDO int freef handler 0 int addOnode 0 int addlnode int add 15 node int add csf node int add csd node int add ts node snode csfnode csdnode tsnode 5 jms h Oct 30 10 51 1986 int delOnode 0 int del Inode 0 int dellsnode int delOlist int delllistQ int delesflist int delcsfnode 0 int delcsdnode 3 int deltsnode 0 ifndef MAIN include ams e endif Page 6 dsp c Oct 30 10 51 1986 Page Sinclude def file h include jms h Jk 2 22 22 2 22222222222 2 2 22 2 2 2 22 22 2222222 2222222 22 2 2 22 22 2 file name dsp c This file contains routines to display fieid level data on screen 1 35 42 41 4 3 1 Get the field level data from the columnar set list 2 Display them on screen addscr csf head csfnode head int i l csfnode ptr ptrzhead yit wmove main 1 atoin ptr colpos strlen ptr colpos 1 for i n i waddch main win waddstr main win ptr coihdr iei strien ptr colhdr ptr ptr gt Next wrefresh main_win 1 2 the fielid level data from the columnar set list play them on screen addscr cs
402. hardware These requirements fall into two classes communications equipment requirements and computer system requirements 3 3 4 1 Communications Requirements In order that the software can clearly and rapidly detect the failure of a connec tion to a remote system the communications equipment must provide a method for detecting failures A modem must be able to recognize and indi cate that a connection could not be made by returning a no answer or busy status code to the software driving it Such modem must also assure that when a connection is broken for any reason the communications line will be properly reset and the software will be informed of this condition The interface for the modem must thus provide for the generation of result codes There must also be a programmatic method for configuring the modem param eters such as parity and local echo as well as for instructing the modem to dial a number and return result codes Equally important there must be a simple method for switching the modem to a command mode so that the Software can force the modem to disconnect from a remote system at any time Within the communications hardware of the computer system there must exist a set of standard RS 232 input output ports with connectors for attaching modems and other RS 232 lines These ports must be accessible and selectable by application software As well as providing the raw input output interface for the system these
403. hat the site has gone down It will usually be sufficient to retry the connection after a short delay and continue transmission at the point of interruption If the remote site has in fact gone down the failure will be detected and handled as a class 2 failure as described above The TACCNET prototype detects and handle each of these classes of failures Because of certain hardware limitations it does not have the desired degree of resolution for class 2 failure diagnosis It does recognize login and startup failures as well as transmission interruptions Log files are maintained for each site showing the history of contacts and messages transferred A system table is kept for the sites to monitor site status and contact times Another table is used to monitor local port activity 3 4 C Database Backup and Recovery Since the CSS environment can be volatile and nodes may be destroyed it is desirable to build into the network the capability to back up and restore impor tant information Examples of such information include network configuration tables and the unit commander s database This requires the designation of backup sites for each node These need not necessarily be the same as the alternate processing sites for the node but that would be a logical choice To increase the possibility of being able to recover a lost site s information the database should be backed up on more than one remote site each at a different location
404. have sent all the messages to be rerouted except for the remaining CC files which we must leave in the queue char MessageFile pathname NewPath pathname OldPath pathname SaveName register int Fd register int Count 0 register int Done FALSE char Number 10 if Fd OpenDir SysName ERR WriteLog GiveToMP can t open directory SysName return ERR E strepy SaveName set strlen SaveName to 0 while MessageFile DeQueue SysName NULL amp amp Done if MessageFile 0 CCTYPE mark non CC files for forwarding sprintf OldPath Zs Zs SysName MessageFile sprintf NewPath 2s c s MSGPROCQ REROUTETYPE MessageFiletl FRename OldPath NewPath WriteLog GiveToMP moved OldPath to NewPath Count else if strlen SaveName 0 remember name of first CC message strcpy SaveName MessageFile else see if we are back to the first CC message Done EQUALS SaveName MessageFile CloseDir Fd if Count gt 0 sprintf Number Zd Count WriteLog GiveToMP forwarded Number messages return GOOD HF Xo X EOF PAT TIM fin ext ext int cha EOF ZSYS72 gt UDD gt GOLDBERG gt UNIX gt HANGUP C E 1987 02 12 1621 49 7 clude net h ern int ModemFd ern int DebugLevel HangUp SysType r SysType Sends a hangup
405. he C database In this section we will examine the components of each of these systems and describe the actions performed by each component 4 2 1 User Interface Once the TACCNET system is installed and started the users of the system do not interact directly with the main system processes Users have a number of commands available to generate messages examine messages monitor transmissions control system operation and access the database The main TACCNET programs qms msgproc and server run in the background and invoke the other programs as needed Their activities are unseen by the system users unless the system monitoring commands are used An interactive console monitor program is provided so that the user may observe the coming and going of messages in the queues monitor the various log files and check the status of system tables 4 2 2 Communications The Communications system is made up of three cooperating programs gms caller and zocontrol These programs interact by placing messages in appropriate input and output queues for processing Each queue is a directory in the UNIX file system and each message is a UNIX text file 4 2 2 1 QMS Queue Manager and Scheduler The Queue Manager Scheduler gms process handles the high level functions of the Communications system Each TACCNET node that the local system can call is represented by a queue bearing the TACCNET name of the remote node Messages to be sent to a no
406. he CSSCS and describe the CSSCS environ ment The CSSCS is intended to support the CSS commander on the battlefield at the corps division and brigade levels The term CSS commander is refers to the officer responsible for managing the CSS function at any particular site CSS is defined as the functional areas of supply maintenance field services transportation personnel and health services found in the divisions corps and theater Army 2 1 CSSCS Functions The CSSCS is an information system for the Combat Service Support CSS node of the Army Command and Control System ACCS As such the CSSCS will interface will the other four nodes of the ACCS as well as with other functional systems within CSS e g STAMMIS The interface to exter nal nodes will be via JINTACCS messages both sent and received The inter face to STAMMIS will be limited to the extraction of data which will be posted to the Command and Control database which will be an integral part of the CSSCS The basic functions of the CSSCS are e to provide a transport and communications network for information exchange among CSS units primarily in the form of JINTACCS mes sages e provide a database of information for use by CSS commanders and personnel in the performance of CSS functions e provide decision support functions to the CSS commanders on the battlefield 2 2 CSSCS Environment The CSSCS will operate in the battle field environm
407. he next block from remote system taking care of retransmission etc Either return a pointer to good packet data along with a length or return an error code NULL with the length set to indicate reason for leaving EOT end of transmission received ERR error Return parameters length and endflag indicate the length of data in bytes and the value of the end of text flag respectively Recognize a packet containing the CAN control code as indicating remote system shutdown fdefine ENDFLAG PackLen ETXOFFSET End of text pointer is here fdefine EatModemInput char tmp 100 read ModemFd tmp 99 unsigned char GetBlock length endflag int length Return parameter for length of block int endflag Return parameter for end of text vs end text block 5 int TempValue Result to return to caller unsigned char TempBuf Pointer to buffer returned from getpacket unsigned char BlockBuffer Buffer to return to caller with good data int PackLen Length of incoming packet int HisCheckSum Checksum sent by remote system int MyCheckSum Checksum computed here int HisSeqNo Sequence number decoded from received packet int RetryCount Retry count before giving up on a packet unsigned char StartOver RetryCount 0 length ERR Default return parameter RetryCount lt MAXRETRY if if TempBuf GetPacket amp Pac
408. he qms is then free to continue its operations without waiting for the call to be made or completed When the caller has established contact with the remote site it spawns another new process called ocontrol This process handles the transfer of messages between the two sites The caller waits for tocontrol to finish and checks for errors or problems It then ter minates the connection and exits returning all its resources to the system eds TACONET Technical Specification November 14 1986 This example shows how processes can generate other processes to allow distri bution of work The qms is free to start up several callers as needed subject to the number of communications ports available on the system The qms com municates with the caller only at startup time telling it what system to call The caller and weontrol processes have a closer relationship since the caller is responsible for setting up and maintaining a connection for ocontrol to use and for handling any errors that wcontrol may encounter The wcontrol process could be implemented as a subroutine of caller but its existence as a separate process allows us to use it at both ends of the communications link When the caller connects to the remote site an tocontrol process is invoked without a caller since the connection is already established to manage that end of the conversation Once the originating zocontrol has sent all its messages the two i0conirol processes swap role
409. her echelon node to call in order to be transmitted and processed In the prototype nodes call one another whenever they have messages to deliver They first check to be sure that a conversation with the desired system is not already in progress Priority messages get fastest possible service preem pting routine messages conversations if necessary In a polled system messages would have to wait half the polling interval on the average for the next call from the master sys tem regardless of priority The cost of a fully connected system is redundancy of capability increased sys iem complexity greater overhead in communications and increased usage of communications bandwidth A polled system would tend to cut down the number of calls and increase the size of the transmissions as larger batches of messages would accumulate between contacts The cost is mainly in the area of increased delay in propagating information through the system In the battle field environment timeliness of information can often be critical There is also the matter of deciding who polls whom how often to call and how to handle high priority messages It is possible to envision a compromise where some nodes are polled and others communicate at will This type of system could take advantage of the inherent hierarchical relationships between superior and 5s TACCNET G36 633 Final Technical Report April 28 1987 subordinate elements within CSS Store and for
410. hile FIELDMARR amp amp c EOF while c EOF fclose SiteTableFd UnLock SITETABLE return NULL indicate site not found EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt WRITEL C TIME 1987 02 12 1732 15 6 finclude net h extern pathname LogFile int WriteLog Pl P2 P3 P4 char Pl P2 P3 P4 FILE LogFd char Date 26 register int 1 0 DateTime Date if ee fopen LogFile a NULL fprintf stderr WriteLog open s n LogFile fprintf stderr Zs Zs Zs Zs Zs n Date Pl P2 return ERR setbuf LogFd char NULL fprintf LogFd Zs Zs Zs Zs Date Pl P2 fclose LogFd return GOOD EOF CALLER This section contains the functions used only by the Caller program CALLER PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt CALLER C TIME 1987 02 12 1554 22 7 finclude sysdef h include net n include lt signal h gt int ModemFd OpenModem will return a file descriptor for the modem site Site allocated by ValidSite released by free or PutSite pathname LogFile global LogFile for use by WriteLog sitename SysName name of the system to be called pathname PortName name of the port to use pathname IntFileName Name of interrupt file to remove int IntFlag Flag indicating if interrupt occurred int DebugLevel 0 Runtime deb
411. ia to guide the operation of the system and cover the general case of down nodes One way to do this is to pick a threshold value for the number of failed attempts to call anode The system keeps count of the attempts resetting the number to zero when a successful connection is made If the number of failed attempts exceeds the threshold value the node is declared down and its messages are forwarded to the designated backup node We must consider the possibility that there may be problems with the local modem These could include a broken or disconnected modem a disconnected phone line and so on Failures due to these conditions are not related to the state of the remote node and should not be counted as failed attem pts The system designer may not have sufficient information to define the failure thresholds or the delay intervals between attempts to call the remote node These values should be regarded as tunable system parameters to be defined by the system operator when the system is started They should be read in from a system configuration file at run time and should be supplied with reasonable default values 3 2 2 3 Disconnect When a call is complete we must be sure that the system can hang up the phone and reset the modem for use by the next caller Some telephone net works do not automatically disconnect a line when one party terminates the call This can lead to permanently busy lines and unnecessary failed calls When a conversat
412. ically small microcomputers Cuna ldem links are undetermined media transparency required o On demand communication links Time constraints priority messages o Most messages in JINTACCS format o Well defined hierarchy of nodes Why TACCNET Why not use uucp Kermit or other widely available data transfer systems o No existing product conforms to CSSCS environmental constraints rerouting failure management JINTACCS message handling time constraints priority messages ianiai of node hierarchy etc Why UNIX Advantages o Availability on many different architectures o Portability many machines in desired size class Good environment for software development o Convenient file structure i e directories as queues _ Process control and inter process communication o Multi user multi tasking system o Standard portable high level language C Disadvantages Unix isa moving boundary Not friendly to naive user o Many variants in distribution Missing features such as file locking O Security TACCNET Capabilities and Functions o Heterogeneous communications Media transparency Error detecting protocol with retransmission Logging of connections errors and message transfers Bidirectional on demand links Tunable parameters speed packet size retry delays Remote system identification Broadcast and message rejection Failure detectio
413. ication November 14 1986 Due to the dynamic nature of the CSSCS network environment there are advantages to implementing a store and forward message passing system When a message cannot be delivered directly to the desired site it can be routed through and intermediate site which may have an active link to the desired site Messages labeled for unknown destinations could be passed on to a designated post office site responsible for maintaining a complete database of network nodes and addresses New nodes or nodes returning to action could call in to the post office to register and pick up waiting mail The post office site could then distribute the new node s address to the rest of the network A side effect of the store and forward capability is the ability to route a message through a chain of intermediate sites to a final destination Message paths would be composed of a sequence of node names This could be used to broadcast messages of general importance to related groups of nodes or to use a specific set of links so as to avoid down or unreliable links Ordinarily the user would supply only the final destination node name and the system would choose the shortest available path to that system probably a direct connection via dialup The user would however have the ability to override the system choice and specify a particular path Aliases could be maintained by the system for complex or lengthy paths allowing the user to send
414. if Found i WriteLog Hold Site was not found in site table return ERR if the queue does not exist create holding queue sprintf Command mkdir 5 2 gt dev null Site if system Command 0 has no effect if queue already exists WriteLog Hold created holding queue Site move the message to the holding queue sprintf Command mv s s s 2 gt dev null MSGPROCQ MsgName Site if system Command 0 then the command failed WriteLog Hold can t move MsgName to holding queue Site return ERR WriteLog Hold MsgName saved in holding queue for Site return GOOD all is well makecc c Oct 30 10 51 1986 Page 25 include net h Create a courtesy copy of the message file pointed to by MsgFileFd by adding the courtesy copy flag to the file header and requeueing for later transmission to the downed site Leave the file in MSGPROCQ for disposition int MSgFileFd NewSiteName MsgPriority FILE MsgFileFd Message file descriptor char NewSiteName Name of site where message will now be processed int MsgPriority Priority of message for new header i FILE CCMsgFd New file descriptor filename CCMsgName New file name char MsgLine LINELEN 1 Storage for copying Create a new message if CCMsgFd NewFile CCMsgName CCTYPE MSGPROCQ NULL i fprintf
415. if feof MsgFileFd i WriteLog Server empty message file NextMsgName sprintf NewName s s ERRORQ NextMsgName sprintf OldName s s SiteName NextMsgName if FRename OldName NewName ERR WriteLog can t move NextMsgName to ERRORQ 26 skip down to priority server c Oct 30 10 52 1986 Page 27 WriteLog Server processing terminated Goodbye Hm UnLock SERVER exit 1 continue go on to next message ungetc c MsgFileFd read in the EXER OPER line if present and locate the MSGID set strcpy Imt Found FALSE while Found amp amp feof MsgFileFd fscanf MsgFileFd SetiD if Found EQUALS MSGID SetID if EQUALS EXER SetiD EQUALS OPER SetiD i fscanf MsgFileFd tempbuf sprintf Imt s s SetiD tempbuf SkipEOL MsgFi if Found all messages must have the MSGID set WriteLog Server MSGID not found invalid message format NextMsgName sprintf NewName s s ERRORQ NextMsgName sprintf OldName s s Si teName NextMsgName if FRename OldName NewName ERR i WriteLog Server can t move NextMsgName ERRORQ WriteLog Server processing terminated Goodbyel m UnLock SERVER exit 1 continue
416. ileFd ignore the priority line fscanf MsgFileFd c s n Path read the path StripMe Path Site get the first site if gt DownSites i NULL i free Headerlnfo gt DownSites i Header nfo DownSites i NULL gt DownSites i malloc strlen Site 1 strepy gt DownSites i Site copy the site SktpEOL MsgFileFd Ignore the trace back full path while Header nfo DownSites i NULL 56 i lt MAXDOWNSITES free gt DownSites 1 Header nfo gt DownSites i NULL Save the last site name as the original destination gt DestSite malloc strlen Path 1 strcpy Headerlnfo gt DestSite Path if DebugLevel WriteLog GetMsgHead DestPath was Headerlnfo DestSite Return with the whole structure return handlerror c Oct 30 10 51 1986 Page 19 include net h HandleError Save the original message in an error queue for messages that were improperly formatted or which were for some other reason not completely processed int HandleError MsgF i 1 eName char MsgFileName Name of message file in MSGPROCQ pathname MsgPathName Complete pathname of the original message pathname ErrPathName Complete pathname of the error queue entry
417. in the archives no send ACK receive file and send ACK move file to msgproc queue no got EOT yes reset ALL DONE INTERRPUT yes p gt send decline file msgprocq C Language Program Listings for the TACCNET System by Principal Investigator Alton P Jensen Professor Project Manager William O Putnam Research Scientist II Project Staff Steven L Goldberg Research Assistant Hong S Shinn Graduate Research Assistant School Of Information and Computer Science Georgia Institute Of Technology Atlanta Georgia 30332 Presented to U S Army Institute for Research In Management Information Communications and Computer Science AIRMICS December 30 1986 Contract No DAHCO 85 C00012 Research Project No G36 633 The views opinions and or findings contained this report are those of the authors and should not be construed a3 an official Department of the Army position policy or decision unless so designated by other documentation Introduction This volume contains the C program source code listings for the TACCNET system There are eleven sections to this volume one for each of the TACCNET programs one for the common functions and one for the UNIX shell command files used to control the system Each section is independently numbered and indexed A table of contents appears at the beginning of each section The TACCNET system is divided into nine
418. in order to transfer data base files between two machines without any conversions This allows two machines of the same type to directly interchange data bases to maintain back ups in case of failures 4 2 3 Message Processing The Message Processor msgproc examines messages and takes actions based on the labeling and content of the messages It periodically checks its input queue msgprocq for new message files to process Messages are removed from that queue and placed in the appropriate system queue for delivery Unreadable or invalid messages are placed in the queue errorq 4 2 3 1 Initial Processing msgproc first examines the message file name to determine the type of the mes sage The message file name is composed of three fields The first field the message type is a one character field it is followed by the node name which may be up to six characters long t The Honeywell DPS 6 is excluded because the GCOS 400 operating system restricts all communications to seven bit data words 43 TACCNET Technical Specification November 14 1986 The third field is the sequence number which is five hexadecimal digits An example of a message name is Rxenair02ca4 which indicates that the message is a routine transmission from site xenair Valid message types are Administrative messages Courtesy copies of messages Invalid or undeliverable messages Messages to be forwarded to an alternate node Messages wi
419. in which rerouting should be performed int GetAltSites MsgPath AltSites char MsgPath network path from failed message char AltSites List of alternate sites to be returned i sitename SiteName Name of original site that was apparently down si tename TempSiteName sitename SiteList MAXDOWNSITES 1 array of sitenames FILE SiteFileFd Pointer to alternate sites file int Done FALSE int j 20 int 0 Path another pointer into the message path if SiteFileFd fopen ALTSITES r NULL i WriteLog GetAltSites Can t open alternate sites file ALTSITES HH return ERR Path MsgPath while Path StripMe Path SiteName NULL amp amp j lt MAXDOWNSITES 1 strcpy SiteList j SiteName strcpy SiteList Lj SiteName last one in path is original dest for each site in list look for altsites in table for 3 j gt 0 j search backward from destination site fseek SiteFileFd long O 0 rewind to beginning of file Done FALSE while Done amp amp fgetc SiteFileFd EOF fscanf SiteFileFd TempSiteName if EQUALS SiteList j TempSiteName found site entry if DebugLevel WriteLog GetAltSites found TempSiteName 1 Done TRUE force loop to end amp try next site while fgetc SiteFileFd NL amp amp i lt MAXAL
420. inal recipient and forward to alternate site user mail message for user at this site network administrative message give message to priority message network admin server put message in priority queue message for database server give message to C2 database server Cretum err gt return OK unknown message type lOControl no arguments arquments from CALLER check argument list to g j determine mode of operation site name 77 P read arguments and initialize in portname MASTER mode fail send ENQ then wait for and acknowledge fail initialize in SLAVE mode succeed get remote ID packet send fail send ID packet succeed and wait for ACK succeed update site table to show successful contact with remote all done Send Mode more files more files more files all done Receive Mode ane a el more files Send Mode Send Mode check for INTERRUPT or ALL DONE conditions not found INTERRUPT etn eror empty queue ALL DONE get file from site queue send file ID packet and wait for ACK path table got ACK 5 got send file and wait for ACK gt retry limit got ACK exceeded yes delete file from site queue update site table more files check site queue for more files to send empty queue signal EOT to remote system set ALL DONE condi
421. indow num Name r Try to reopen the file if Fp NULL if Window num LastPos gt OL fseek Fp Window num LastPos 0 Find old EOF iac Position to last part of file 0 Reset clock Buzzer FALSE alarm BUZZER Always return after BUZZER seconds while Fp NULL amp amp Buzzer If the file is open continue til end Window num LastPos ftell Fp Remember where we were Result fgets String 149 Fp Get the next line from input if Result NULL The file is ended fclose Fp The stream will need to be reopened NULL Enforce this condition tailfile c Oct 30 10 51 1986 Page 57 else 0 for i 0 i lt strlen String i if String i Nr 66 String i n waddch Window num Win String i ntt else if n 78 amp amp String i r waddch Window num Win n 0 wrefresh Window num Win Window num Fp Fp Copy new pointer back alarm 0 signal SIGALRM SIG DFL void SetBuzzer Buzzer TRUE update c Oct 30 10 51 1986 Page 58 include console h Update Call the appropriate routine for the given window to display current information status in that window Two types of displays exist Queue Displays file lists and Logfile Displays parallel to tail f logfile Static inf
422. ing Xernix to simulate the TACCS t Corfiguration Tre following diagram snows tne normal network routing that will be used in all scenarios Communications links between systems wiil be cover diai up telephone lines without manual intervention All connections will computer initiated and terminated Test Bed Configuration eee c ee ee ee eet ee ee ee m CA ee s et PR mim Messages messages to be used in this demonstration are from the ALLS COM Message Standards They are in JINTRCCS format The chosen messages are required to be passed at the force level between cambat service support and the other four nodes as well as internally as identified the information requirements document supplied LOGC The ferce level interface will be simulated since the interrim system has remote interface This simulation will consist of a screen display of the message in JINTACCS format complete with slashes that may be displaved upon demand as weil as an on demand operator readable version that dispiavs beth the messace data and identifying information such as labeis Message Features see incl 1 for message formats The examples piver are illustrative of the gifferent types of features in the messaces are in way exhaustive of all the features in the messages i e all features are nc listed in all
423. int Result Result code from link amp unlink sprintf MsgPathName MSGPROCQ MsgFileName sprintf ErrPathName s s ERRORQ MsgFileName Result link MsgPathName ErrPathName Move the file if Result ERR Uh oh It didn t work WriteLog HandleError Cannot move MsgPathName to ErrPathName return ERR Try to recover even now Result unlink MsgPathName Remove old pointer if Result ERR Couldn t remove old file WriteLog HandleError Cannot remove MsgPathName WriteLog Message placed in ErrPathName PP return 2000 Good result hashtime c Oct 30 10 51 1986 Page 20 include net h define YEARSECS 31557600 define DAYSECS 86400 define HOURSECS 3600 define MINSECS 60 HashTime takes the given date string in the form MM DD YY hh mm ss and returns an integer value representing the number of seconds elapsed since the beginning of the epoch The epoch is defined most UNIX systems to be 00 00 00 January 1970 GMT days per month J F M A M J J A S O0 N D int Marray 12 31 28 31 30 31 30 315 31 30 31 30 31 J long HashTime DateStr int i int Month Day Year Hour Minute Second long Time i sscanf DateStr Sd d d amp Month amp Day amp Year amp Hour amp Minute amp Second ma
424. ion broadcast message handling and support for preemption or cancellation of a transmission i Each node in the network has a unique name which must be known by any other TACCNET node with which it communicates Because of the division of messages into system queues there must be away for a system to identify itself when it calls another node so that the proper queues can be associated with a transaction When a connection is established by a remote node the zocontrol system 1s invoked on the local node The remote system identifies itself by transmitting a data packet containing its name The local node will verify the packet sending an acknowledge code in response Before files can be transferred between the systems the local node must next verify the existence of the remote node by examining its tables and transmit a second ack nowledge code to validate the connection If the remote node is not listed in its tables the local system will reject the call disabling any further dialog with the remote A second level of identification occurs immediately before each file or mes sage is transmitted from one node to the other Since message names are chosen by the system to be unique throughout the network these are preserved when a message is transferred to other nodes Thus the communi cations protocol dictates that each message be preceded by its unique network identification This identification is transmitted by the sender in the fo
425. ion is complete each system both remote and local should issue a hangup command to its modem and then check the modem status to make sure the line has been dropped The modem should then be reset for the next call and the port connection released 3 2 3 Database Operations In this section we will discuss some of the issues surrounding automated data base operations and JINTACCS automation One expected use of JINTACCS messages will be the transfer of information from machine to machine within the CSSCS Messages will use data from the unit Command and Control C databases It will be worthwhile to consider the issues described below in the development of automated database servers for C and JINTACCS processing 18 TACCNET Technical Specification November 14 1986 3 2 3 1 Message Types There are many different message types in the JINTA CCS set The messages are primarily intended to report information for storage or aggregation Some of the messages however may be used to request rather than report informa tion This is done by labeling the message as a request message in a special field of the initial main text of the message Request messages to be processed automatically will require the presence of a database server on the system That server must be able to distinguish between request messages and report messages Request message will require the server to query the database for information format the information into a
426. ion of directory and file handling routines Problems with the port configuration and the modems have hampered progress but Nave been resolved The C program linker for GCOS still refuses to link moderate to large programs Help from Honeywell has produced a workaround solution which requires the user to interrupt the compilation and manually edit the linker control file to set certain link parameters before restarting the link process This allows us to link the programs but is a severe inconvenience and must be regarded as a temporary fix The database backup and recovery functions are complete are being tested The incremental database recovery from archives is being coded and should be complete in April scenario will be devised to demonstrate the system Coding for the JINTACCS message composition tool is complete shinn is debugging the program and making some cosmetic changes Meetings and Presentations Regular meetings were held to exchange information and present results In addition planning sessions were called as needed Plans Test and debug database backup and recovery system Test and debug JINTACCS message composition tool Implement incremental database recovery from archives Rewrite file and directory handling routines for GCOS TACCNET Test GCOS C low level I O routines in TACCNET Personnel Alton P Jensen 9x 9 ya project administration William Putnem 89 project manag
427. ional C and optional entries Level 3 relation field defines the collection of fields fname for each set fsetid and their attributes i e the field number of each data field in the set fno the occurrence category feat the data start column fcol in the case of columnar 49 TACCNET Technical Specification November 14 1986 sets the DFI dfi and the DUI A bottom level relation dfis shows the characteristies for each data field specified by a pair ddfi and DUI i e field descriptor dfdesc and column header dcolhdr if applicable for each data field left right justification of data 4177 the number and type of characters in each data field dformat and the remarks dremarks Another low level relation edfis which will not be used for the eurrent version may be used later to identify for each com posite DFI CDFI its component elementary DFIs EDFI 4 2 4 2 3 The C Database The database schema is comprised of a number of relations to store various kinds of command and control information The following are sample schemas for the messages 5006 5026 and 5034 relation Isi for S034 SHORTSUP Supply Shortages relations cas and scl for S006 CASSTA TS Casualty Infor mation Report and relations pol and ptloc for S026 POLLOC POL Loea tions lunitid lsicat lsimod lgty lunit lreq lreqno cas cunitid cemos ckia cn
428. ionary Information accessed hierarchically fields within sets within messages Speed of operation is desirable No need for relational query capability Reduced redundancy Database Design Command and Control C2 Relational may be preferred Information not defined in hierarchical manner Data items may be related in many to many fashion Database contents are dynamic _ Relational query capability desirable User oriented interface necessary First cut extract from JINTACCS messages and normalize Database Operations User interface for message composition Uses message dictionary to build prompt panels Builds message in JINTACCS format and submits to msgproc User can review edit or save message during composition New messages are easily added for automated composition assistance Database Operations server automated message posting Reads JINTACCS messages Extracts variable data into file Builds UNIFY update in file Calls UNIFY to enter data update Old data overwritten by new Limitations Csource module for each message o Needs embedded query language Database Operations build automated message generation O Given message ID destination priority Executes UNIFY query capturing data into file o Reads data from file puts into JINTACCS template in new file Submits new message file to msgproc for input to system
429. it while things stabilize this is adjustable FlushModeminput ModemFd Phase error requires good cleanup RetryCount SendByte Send negative acknowledgement free TempBuf Wr i teLog GetBlock phase error sent else if PackLen gt 3 TempBuf 3 Save TempBuf 3 o sscanf TempBuf amp HisSeqNo Decode packet number TempBuf 3 Restore if HisSeqNo SeqNo amp amp HisSeqNo SeqNo 1 getblock c Oct 30 10 51 1986 Page 9 RetryCount Bad data don t go forever SendByte Send negative acknowledgement WriteLog GetBlock Sequence number is bad sent NAK sprintf HisStr HisSeqNo sprintf MyStr 4 SeqNo WriteLog GetBlock his number is HisStr mine is MyStr continue Get back to main loop TempBuf PackLen 2 Save TempBuf PackLen 2 0 Set up EOS for a second sscanf amp TempBuf PackLen 61 amp HisCheckSum TempBuf PackLen 2 c Restore EOS don t worry MyCheckSum CheckSum TempBuf 3 PackLen 10 Compute CkSum if MyCheckSum HisCheckSum Packet in error FlushModeminput ModemFd Make sure buffer is clean SendByte NAK Send negative acknowledgement control WriteLog GetBlock checksum s bad sent sprintf HisStr HisCheckSum
430. ite SiteName else sscanf SiteName Z 0 FirstSite strip first site if ValidSite FirstSite NULL undefined site if ValidPath FirstSite Path no path to the site fprintf stderr Sorry path to s n FirstSite return NULL else construct the desired path with info from ValidPath sprintf DestPath ZsZs Path SiteName strlen FirstSite else strcpy DestPath SiteName first site is defined RetVal malloc strlen DestPath 1 strcpy RetVal DestPath return RetVal int usage name char name fprintf stderr usage Zs priority dest dest lin name exit ERR EOF Final Technical Report 1985 86 Combat Service Support Computer System Advanced Experimental Demonstrations by Principal Investigator Alton P Jensen Professor Project Manager William O Putnam Research Scientist II Project Staff Steven L Goldberg Research Assistant Hong S Shinn Graduate Research Assistant School Of Information and Computer Science Georgia Institute Of Technology Atlanta Georgia 30332 Presented to U S Army Institute for Research In Management Information Communications and Computer Science AIRMICS April 28 1987 Contract D 85 00012 Research Project No G36 633 The views opinions and or findings contained in this report are those of the authors and should not be construed as an official Dep
431. ite ValidSite Site char Site x Validates the existence of Site in SITETABLE and returns as its value a pointer to a site table entry in a struct defined by site in net h If the site is not found in the table it returns NULL FILE SiteTableFd site SiteEntry register int c 0 long Start pathname TempBuf register int 1 int NumRecs if Lock SITETABLE ERR WriteLog ValidSite Can t lock SITETABLE m exit 1 if SiteTableFd fopen SITETABLE r NULL a WriteLog ValidSite open SITETABLE UnLock SITETABLE return NULL indicate failure skip down to beginning of first site entry NumRecs 0 while c getc SiteTableFd FIELDMARK SkipEOL SiteTableFd do NumRecs Remember how many records we have skipped Start ftell SiteTableFd save pointer to start of entry fscanf SiteTableFd Zs TempBuf get a site name if EQUALS TempBuf Site it is the one we seek fclose SiteTableFd SiteTableFd fopen SITETABLE r for i 0 i lt NumRecs i while c getc SiteTableFd FIELDMARK SiteEntry RdSite SiteTableFd read in the site entry fclose SiteTableFd UnLock SITETABLE return SiteEntry return pointer to the site structure else do c getc SiteTableFd read first character w
432. ived The inter face to STAMMIS will be limited to the extraction of data which will be posted to the Command and Control database which will be an integral part of the CSSCS The basic functions of the CSSCS are e provide a transport and communications network for information exchange among CSS units primarily in the form of JINTACCS mes sages e to provide a database of information for use by CSS commanders and personnel in the performance of CSS functions e provide decision support functions to the CSS commanders on the battlefield 2 2 CSSCS Environment The CSSCS will operate in the battle field environment of the modern Army This requires mobility and portability of all systems as well as transparency with respect to communications media CSS units will appear as nodes in a loosely connected network capable of frequently changing topology Nodes may join and leave the network at will as they change locations in the battlefield environ ment Nodes are also subject to catastrophic failure due to enemy activity ae TACCNET G36 633 Final Technical Report April 28 1987 These elements of the environment require a network which is able to detect arrivals departures and failures and adjust operations accordingly The CSSCS must be able to detect errors in the routing or delivery of a mes sage and reroute the message as necessary to ensure timely delivery to an appropriate CSS unit In the event that a CS
433. ized 4 2 2 3 3 Message Header Packets Each file transmitted is preceded by a special packet containing the name of the file on the sending system This header packet achieves two goals it allows for network wide uniqueness of file names and it gives the receiving system the option of rejecting a message file if it has already received a file bearing the same name By rejecting messages based on their file names no time is spent sending a file that will be redundant All file names are unique throughout the network since each is composed partly of the originating system s network identification 4 2 2 3 4 Protocol Implementation To promote transmission integrity files are transmitted as sequences of data packets each containing a text block surrounded by control information indicat ing packet number relative to the initiation of the current link checksum and a flag indicating the end of block or message The packet number and the checksum are represented in hexadecimal using ASCII characters so that con trol information contains no special codes Control codes are used to mark the beginning and end of the text block and to indicate end of file or end of message These are represented by their ASCII equivalents Figure 4 1 is a diagram of the positional fields within a data packet Since some operating systems buffer input until a new line is received i all packets are followed by a CR Carriage Return code Thi
434. kLen NULL We have an error sleep 2 Wait 2 seconds attempted error recovery FlushModemInput ModemFd RetryCount Consider TIMEOUT to be very bad WriteLog GetBlock timed out on GetPacket n mm continue Go back to main loop and try again PackLen 3 if TempBuf 0 EOT Empty transmission switch modes length EOT Set error condition to EOT received free TempBuf return NULL Return error condition else if TempBuf 0 CAN Remote had to abort cleanly length CAN Set error condition to CAN received free TempBuf return NULL else Phase error etc FlushModemInput ModemFd RetryCount Note the failure SendByte Improper control information WriteLog GetBlock improper control info sent EatModemInput Error recovery special to Honeywell free TempBuf else if PackLen lt 3 sleep 2 wait while things stabilize this is adjustable FlushModemInput ModemFd Phase error requires good cleanup RetryCount t SendByte NAK Send negative acknowledgement WriteLog GetBlock phase error sent Wm EatModemInput else if PackLen gt 3 c TempBuf 3 Save TempBuf 3 7407 sscanf TempBuf Zx amp HisSeqNo Decode packet number TempBuf 3 Restore if HisSe
435. ke sure date is valid if i l 6 return long ERR if Year O return long ERR if Month 12 Month 1 return long ERR if Day gt 31 Day 1 return long ERR if Hour 0 Hour 23 return long ERR if Minute O Minute 59 return long ERR if Second lt 0 Second gt 59 return long ERR Day account for non zero offset Month account for non zero offset account for seconds since beginning of month Time long Second Time long Minute MINSECS Time long Hour HOURSECS Time long Day DAYSECS hashtime c Oct 30 10 51 1986 Page 2 account for preceeding months of this year for i 0 i lt Month i Time long Marray i DAYSECS days month seconds day if Month gt 2 66 Year 4 0 if after Feb in a leap year Time DAYSECS add the extra day Time long Year 70 YEARSECS return Time include net h define PRIORPOS define PRIORCUT 2 int High Priority char Priority return atoi Priority PRIORPOS lt PRIORCUT hold c Oct 30 10 51 1986 Page finclude net h Hold See if message MsgName was destined for an inactive site If so put it in a holding queue If not return ERR int Hold MsgName char MsgName FILE SiteTableFd FILE Fd header MsgHeader header GetMsgHead
436. lI ee p 13 File archive c Page 1 Archive 14 Files datetime c Page 15 15 File dequeue c Page 16 1 5 0890191 EN COE ws ee ee 16 File filenq c Page 17 doo dais d ADOS Mae RR ACCRUE AC 17 File fileopen c Page 18 GET 18 File frename c Page 19 2223 9 4 24 545255555 CR CUN eee eee 19 File getdir c Page 20 ERR E E aao Oe e ede Ge ee 20 File givetomp c Page 22 BIVeTOMP ACE d XENON RR E 555 122 File lockfile c Page 23 uua do o E d P 23 UnLock rcr PE 23 File myname c Page 25 3x wr em eres eee ee BM ea 25 File newfile c Page 26 RR RA VE Edad 26 File now c Page 27 gree eee are 27 File ports c Page 28 occu boss bc he ees eee WW 128 22 PULPOPUS ate eee GOEPOR US decise d EE ea awe d Ra ac eevee Table of Contents Thu Oct 30 10 50 52 1986 2 04 565 PSFree 93 9 9 9 9 C 9 9 9 9 8 8 9 6 32 File putsite c Page 33 PutSite Star qua pA Ges eae NM ic dv ec ac zi 39 File readsite c Page
437. language Database Operations Backup and Recovery O Uses TACCNET to copy snapshot of database to remote node s o Broadcast messages used to retrieve messages sent after snapshot o Backup recovery procedures initiated by user or cron To recover from a failure Thesnapshotis retrieved from one of the remote backup sites Abroadcast message is sent to the network requesting retransmission of all messages sent to the failed site after the snapshot was made O _ Network Simulation SLAM simulation on CDC Cyber Low moderate and high traffic Assume basic network segment 1 3 ports dialin and dialout SPO FSB S amp T Basic network segment Network Simulation Results Bottleneck at DMMC 2 dialin 2 dialout gives best results o 1dialin 1 diafout is OK for leaf nodes Response Time vs Arrival Rate sec 180 11 2 j 120 i i i 7 3 60 0 06 0 12 msg sec 0 0 Further Investigation JINTACCS processing Message grammar parsing functional description Security Data and network security Expert Systems Structured format with ambiguities message processing Voice Technology Voice data interface for composition and display User Interface Tools Edit display messages during creation insulation from JINTACCS Distributed Database Consistency redudancy fault tolerance G3
438. lcsdlist ptr csdnode ptr if ptr gt Next NULL delesflist ptr gt Next delcsdnode ptr list c Oct 30 10 51 1986 sees rt es SSSsS 252525282252 28 85855255255 S52 25525225 2525 25 3 gt 5 2 gt indirectly recursive with del2list delete the columnar set data node pointed to by ptr 2 and all its children a Cu delcsdnode ptr csdnode ptr if ptr gt Prev NULL if ptr gt Next NULL ptr gt parent NULL else ptr gt parent gt fchild ptr gt Next ptr gt Next gt Prev NULL else i ptr gt Prev gt Next ptr gt Next if ptr gt Next NULL ptr gt Next gt Prev ptr gt Prev Ss 2S I indirectly recursive with del2list delete the free text set node pointed to by 2 and all its children A QD AP C AP AP CE 1 4 deltsnode ptr tsnode ptr ptr gt parent gt uval tschild NULL free Delete all the SET nodes of a message from the level 1 list sss SS Se eS ESS Se SS delllist 1 11511 ptrl if 1 gt NULL delllist ptrl Next del
439. ld 2 Point Name M Enter the code name for the specific CL III point DFI 468 DUI 004 Field 3 Location M Enter the location of the specific CL III point using one of the following Location Seconds DFI 011 DUI 043 Location UTM 10 Meter DFI 012 DUI 005 Location Minutes DFI C469 DUI 011 Unit Location Name 500 DUI 043 Location UTM 100 Meter DFI C542 DUI 012 Set Identifier 3KCLTHRE Field 1 Data Entry M Enter the data entry number from set 3KPOLLOC which identifies the appropriate Class III point DFI 082 DUI 001 Field 2 Fuel Quantity and Type M Enter the quantity unit of measurement and fuel type on hand at the time of the report DFI C4007 DUI A01 G2 Cn ACCS A3 500 003 June 1984 Page 2 of 2 MESSAGE INSTRUCTIONS MESSAGE NUMBER S026 TITLE POL Locations POLLOC SPECIAL INSTRUCTIONS Continued Set Identifier 3KCLTHRE Continued Field 3 011 Quantity and Type Enter the quantity unit of measurement and oil type on hand at the time of the report DFI C4032 DUI A01 Field 4 Lubricant Quantity and Type M Enter the quantity unit of measurement and lubricant type on hand at the time of the report DFI 2C4033 DUI 01 Field 5 3KCLTHRE Comments 0 Enter any pertinent comments about the POL point in the space provided or if more space is required include a reference note or number and expand in the AMPN set bel
440. ld be provided during the C code conversion Some groundwork was required so that existing C code from the UNIX based TACCS environment could be transferred to the Honeywell DPS 8 and retrofitted to run under GCOS Numerous changes were required due to the disparate nature of the GCOS and UNIX operating systems but the interfaces and operations of the programs were designed to be the same under both systems An examination of DISTRIX 1 0 uncovered or confirmed numerous deficiencies which were reported DISTRIX 2 0 was reported to fix some of the bugs Jim Kearns worked on getting a pre release copy for the project A presentation based on the final report of the previous contract g 36 610 was given In addition a briefing on TACCNET was scheduled for December 18 5 4 December 1985 Documentation for the Honeywell C compiler was received in December Work began on transferring the UNIX based C code for TACCNET from the PC AT to the DPS 6 The transfer was completed without incident using 18 TACCNET G36 633 Final Technical Report April 28 1987 simple terminal emulation and file transfer programs Initial attempts to com pile the C code were moderately successful with most routines compiled on the first try Some compiler differences were encountered and corrections made resulting in the successful compilation of approximately 95 of the C code A problem emerged when we attempted to link the compiled code into an exe cutable pro
441. le File File File File File File File File Table of Contents Makefile server h blsup c bisup build c makecas c MakeCAS makepol c MakePOL makesup c MakeSUP post c Post postcas c PostCAS postpol c PostPOL postsup c PostSUP putdtgm c PutDTGM Thu Oct 30 10 52 23 1986 949 9 9 9 8 99 9 9 5 9 9 9 9 99 99 99 949 9 9 9 9 9 9 999 99 99 99 9999 98999 9999999592849 HLH HHO HHT Te oe 9999 99 9 99 99999999 Oe 99 9 HHH 2929 9 5 9 9 9 9 6 99 999 94 9979 9 99 4 4 realtime c RealTime request c Request server c main usage ShutDown 99 9999 9 9 SE E EE 99 eevee 499 9999 e 994999994 999979792289 8 startmsg c StartMsg unitid c Uniti dD e 4 999 9499 99999 999599 Page Page Page Page Page 6 Page Page 10 Page 12 Page 13 Page 15 Page 1 10 12 13 21 22 23 25 29 30 Makefile Oct 30 10 52 1986 build build o request o startmsg o datetime o writelog o makepol o makecas o makesup o realtime o unitid o blsup o putdtgm o cc 0 o
442. le appropriately named Interrupt will be deleted when the affected process recognizes its existence in the system queue In this way the interrupt signal is acknowledged so that the qms can then take over control of the released resources Since a process must poll its queue for special interrupt signal files these sig nals are not truly asynchronous A process might not recognize the existence of an interrupt file for a long time if at all While ignoring the interrupt is not prescribed the process requesting an interrupt must expect that an interrupt may not be acknowledged in which case it should not wait forever for a resource If a process cannot gain control after a certain time threshold it should abort indicating the error to the operator for manual intervention The approach of creating signal files and forcing the affected process to poll for such files was chosen in the implementation of TACCNET for reasons of simpli city and portability Other methods could be more effective if their implemen tation were not complex and operating system specific 8 3 2 Port Management The CSSCS will have several communications ports available for network use It will be necessary to allocate these resources efficiently to guarantee max imum service Issues to be considered include port multiplexing port status numbers of ports per node and priority service 3 3 2 1 Configuring Ports Because each system in the network mus
443. le in database in the context of DSS based on that database Describe DSS lt gt C DB inter face C Database Analysis Interview potential users and operators of TACCS systems as well as other affected individuals digest available documentation on C DB examine JNI TACCS message set and develop a basic description of the C database its users applications contents and interfaces Security Analysis Study and define security considerations in the TACCNET environment Areas include software protection data security access levels software hardware and information data transfer encryption information storage and transfer Apply findings to current TACCNET software system Network Tracking Interactive monitoring of network operations compilation of statistics on mes sage flow amp usage node interactions Usage of such data in automatic configuration of network and individual systems Examination of sources destinations of messages development of tools for network analysis and management Analysis of ACCS COM Usage Identify stimulus response patterns in usage of JINTACCS messages Analyze and describe processing requirements and operations for automated handling of messages according to stimulus response patterns Develop scenarios for test ing of JINTA CCS message systems ee TACCNET G36 633 Final Technical Report April 28 1987 Technology Transfer and Integration Integrate multip
444. le related tasks and projects in the Command amp Control and or JINTACCS message processing areas into coherent prototype and demonstra tion systems Develop and evaluate hardware software and documentation necessary for interfaces between existing and proposed systems Support AIRMICS internal development teams in transfer of prototype systems to target environment and in development of operational systems Application of Expert Systems Voice Recognition Human Factors Engineering Intelligent Data Flow Analysis and other advanced technologies to environment and operations of C and JINTA CCS messages STAMMIS extraction and the CSSCS interface The extraction of information from STAMMIS for use in the CSSCS should be examined Interfaces for information exchange should be developed and stand ardized Transfer of information from a STAMMIS into the CSSCS prototype system via TACCNET could be demonstrated 32 These scenarics are to be used in conjunction with Task 3 of Delivery Order 00418 for Contract DAAK7 79 D W 87 with the Georgia Institute Technology These scenarios were developed jointly by AIRMICS and the Geornia Institute of Technology Attending the meeting were the followine Professor A P Jensen GIT Mr Bill Putnam GIT Thomas Rogers Maj David R Forinash Terry kiiderbrarnd Cot Larry Frank Dr Jerry MceCoyd Description of task The extensive data requirements of command
445. line head csfnode head int i l jj int POS DIFF csfnode ptrc if y lt MWLINES 1 yt dsp c Oct 30 10 51 1986 Page else waddch main wmove main 1 ptrc head POS atoin ptrc colpos strlen ptrc colpos 1 for i POS i waddch main win if EQUALS ptrc j L Left Justification for j 0 j lt ptre gt dmax j waddch main_win _ i i ptrc gt dmax else Right Justification DIFF strien ptre gt colhdr ptre gt dmax for j 0 j lt DIFF j win for j 0 j lt ptre gt dmax j waddch main_win _ izit tstrien ptre gt colhdr ptrceptrc Next wrefresh main win Add a data node as s sublevel of the corresponding field node addscr csd d register int 1 int n int LIVE FALSE int FIRST TRUE char str 31 csfnode fptr csdnode dptr node fptr ptrl uval cschild point to the head of field list for j 0 fptr j count the fields fotr fptr gt Next allocate storage for pointers to field data nodes node csdnode malloc j sizeof csdnode data nodes dptr csdnode malloc j sizeof csdnode tail ptr str O NULL whi Te 1EQUALS str loop till user enters end of set fptr ptrl uval cschild point to the head of field list addscr_csline fptr 8
446. linode int del snode int delOlist int delllist int delcsflist int delcsfnode int delcsdnode int deltsnode int ins 15 data ifndef MAIN include ams e endi f ifdef ONYX acckey X Y access X Y fendi f Page 5 add c Oct 30 10 50 1986 Page include ams h functions to add nodes and lists Add message header into level O list addOnode strl str3 char strl str3 listO nodeO 11510 malloc sizeof listO if head NULL head nodeO nodeO prev NULL NULL nodeO schild NULL strcpy node0 gt mtagl str strcpy nodeO mtag2 str3 ptrOznodeO else nodeO prev ptrO nodeO next NULL nodeO schild NULL ptrO gt next nodeO strcpy nodeO gt mtagl str strcpy nodeO mtag2 str3 ptrOsnodeO Add message header into level O list amp insOnode str2 str4 char str2 str4 strcpy ptrO gt mno str2 strcpy ptrO mid strh add c Oct 30 10 50 1986 Page F EEE E A O i L L ALi iiit Add a SET IDENT in the corresponding level 1 list ZZRIL addlnode SETTYP SET D char SETTYP char SETID listl nodel nodel listl malloc sizeof listl f the node is the first node of the parent node ptrO
447. ller no EOS BlockBuffer unsigned char malloc length 1 Allocate block if BlockBuffer NULL Don t keep going if problem exists WriteLog GetBlock OUT OF MEMORY allocating block exit INTERNALERROR l movmem TempBuf 3 BlockBuffer length Move good data Get rid of storage allocated in lower level for packet free TempBuf return BlockBuffer Return pointer to good block of data EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt GETFIL C TIME 1987 02 12 1615 19 4 finclude net h finclude iocontrol h finclude iocontrol e GetFile read the next file if available from remote system taking care of retransmission etc Either write a new file or return an error value int GetFile int BlockLen Length of each new block read int ETXFlag Indicates EOT received int Result Result from GetHeader call unsigned char TempBuf Block pointer for each read in block int MsgLength 0 Length of message index to Message FILE FileFp File pointer for temporary file filename FileName Name of current incoming message int i For each file received get header with message name Result GetHeader FileName Get header from remote system amp audit if Result EOT return EOT No new header arrived end of transmission if Result REJECT The message has bee
448. location to another Locations are passed in as string pointers indicating from and addresses respectively Simply copy bytes one by one until all bytes copied Length is the third parameter movmem from to length unsigned char from l Memory address to copy from unsigned char toll Address to copy to int length Length in bytes to copy register int i70 while i lt length toli from il 1 PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt MYNAME C TIME 1987 02 12 1639 23 1 finclude net h MyName Return the name of this site found in the file MYNAME char MyName EOF sitename TempSiteName Temporary storage for site name FILE MyNameFd MYNAME file descriptor char RetPtr Pointer to return to caller if MyNameFd FileOpen MYNAME MASTERQ r NULL fprintf stderr MyName I don t know my own name An fclose MyNameFd return char NULL Try to recover fscanf MyNameFd Zs TempSiteName Get this site s name fclose MyNameFd RetPtr malloc strlen TempSiteName 1 Get perm storage strcpy RetPtr TempSiteName return RetPtr PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt NEWFIL C TIME 1987 02 12 1639 54 2 include net h NewFile build file name in the directory given by Queue the ZTEMP subdirectory so as to make it invisible
449. lockPtr Free storage now return NULL sendheader c Oct 30 10 51 1986 Page 35 include net h include SendHeader send current message identification header and await remote acceptance Remote may deny a message by header alone indicating it has already received the message Remote must respond with two ACK s The first indicates that the message i d header packet was received correctly and the second is the remote s acceptance of the message SendHeader messagename char messagename Name of message being sent i int NameLength Length of message name to transmit int GoodResult Result from sendblock cal int EndFlag TRUE End of text flag for sendblock int Length Length of response buffer space holder int Result Result from waitack NameLength strlen messagename Compute length of string FlushModeminput ModemFd Clear input buffer before sending header Send the block and wait for an acknowledgement GoodResult SendBlock mes NameLength lag if IGoodResult elias SendHeader can t send message messagename Exit LOSTCONTACT Now acknowledge message acceptance must get double acknowledge Result WaitAck See if remote sends an acknowledgement if Result ERR WriteLog Sen
450. looking if Found couldn t find the start of the data WriteLog PostSUP cannot find UNITIDM field in message fclose DataFp return ERR fscanf MsgFd 4 read the unit ID if Ptr strrchr Name FIELDMARK NULL if the field is labeled Ptr skip over the label to the actual data else Ptr Name SkipEOL MsgFd Skip trailing fields SkipEOL MsgFd Skip 6KSHTSUP introduction SkipEOL MsgFd skip the column headers while LastLine Process all lines in columnar set Result fscanf MsgFd 1 5 5 5 4 n Quantity Unit tem Model Comments if Result EOF WriteLog PostSUP SHTSUP message incomplete postsup c Oct 30 10 52 1986 Page fclose DataFp return ERR SkipEOL MsgFd ComLen strlen Comments if Comments ComLen 1 amp amp Comments ComLen 2 i LastLine TRUE This is the last line Comments ComLen 2 0 Remove those unsightly slashes if Comments 0 A amp amp Comments 1 1 Indicate that item is on request Al sprintf ReqNum s Comments 2 requested Extract request number else Req N Indicate that item is not on request strcpy ReqNum Fill empty field fprintf DataFp s s s s s c s n Ptr
451. lout ports by the TACCNET system It is used by the qms to deter mine which ports to use and to keep track of ports currently in use For each port defined as a dialout port there is an entry in the Port Table Each line of the table forms an entry where the first character is a colon followed by the pathname of the output port usually dev ttynn where nn is a port number After the port name are two fields indicating the name of the system currently being dialed through that port and the priority level of the transmission if the port is in use If the port is not in use the first of these fields is the ASCII string free The availability flag is when the port is available When the port is unavailable it is either R if the line is being used for routine messages or a if the line is being used to send one or more priority messages Figure 4 8 illustrates the format of the Port Table file Note that the first entry indicates that port dev ttyOO is currently in use by a caller for system xenair for a routine message or set of messages The second entry shows port dev ttyOl to be available for dialout to any system Since this file indicates the current status of all dialout ports it might need to be reset if the system is aborted altogether as mentioned above Therefore changes to this file should also be made to the file tables ports save so
452. lse add ts node freetext Validity Checker for data format and value VALID DVAL NOTYP char DVAL char NOTYP check if DVAL is valid i e f minw lt length lt f maxw for f type FORMATTYPE check if DVAL is in f ftype 1 blanks c Oct 30 10 50 1986 Page include suppress blanks at the end of string bl sup str char str int k kestrlen str while k gt 0 amp amp str k 1 str k O return str pad blanks to make the string length n char bl pad str n char str int n i int k k strlen str while k lt n str k str k 0 return str 20 conv c Oct 30 10 50 1986 Page e a Convert the first substring of str to integer er t ttt A a a a int atoin str k char str int int i n n 0 for 1 0 i lt k i 10 n str i O Convert char c to upper case ASCII only char upchar c char c if c gt 56 c lt z return ct A a else _ return x Convert str s to upper case ASCII only ct o m m mm a m z char upstr char s int i for iz0
453. lse strcpy TempFileName FileName return fopen TempFileName FileType EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt FRENAM C TIME 1987 02 12 1607 40 9 finclude net h int FRename Pathl Path2 char Pathl char Path2 Renames Pathl to Path2 if link Pathl Path2 ERR return ERR if unlink Pathl ERR return ERR return GOOD EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt LOCR C TIME 1987 02 12 1626 59 3 finclude net h int Lock FileName returns ERR if the file is already locked GOOD otherwise char FileName EOF Simple file locking mechanism using open We try to lock FileName by creating a file called FileName LCK Setting Oflags O CREAT and O EXCL causes open to return ERR if the file already exists pathname LockFile register int i Fd int Oflags 0 CREATE O EXCL return ERR if file exists int Mode 0664 sprintf LockFile Zs LCK FileName try and lock the file several times before giving up for i 0 i lt 10 i if Fd open LockFile Oflags Mode ERR sleep 2 else break if Fd ERR return ERR file was already locked else close Fd don t forget to close the file GOOD file is now locked PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt MOVMEM C TIME 1987 02 12 1638 55 9 finclude lt stdio h gt movmem copy memory contents from
454. lude l iocontrol nh finclude iocontrol e SendHeader send current message identification header and await remote acceptance Remote may deny a message by header alone indicating it has already received the message Remote must respond with two ACK s The first indicates that the message i d header packet was received correctly and the second is the remote s acceptance of the message SendHeader messagename char messagename Name of message being sent 1 int NameLength Length of message name to transmit int GoodResult Result from sendblock call int EndFlag TRUE End of text flag for sendblock int Length Length of response buffer space holder int Result Result from waitack NameLength strlen messagename Compute length of string FlushModemInput ModemFd Clear input buffer before sending header Send the block and wait for an acknowledgement GoodResult SendBlock messagename NameLength EndFlag if GoodResult WriteLog SendHeader can t send message header messagename exit LOSTCONTACT Now acknowledge message acceptance must get double acknowledge Result WaitAck See if remote sends an acknowledgement if Result ERR WriteLog SendHeader TIMED OUT waiting for acceptance messagename exit LOSTCONTACT FlushModemInput ModemFd Make sure no garbage
455. ly well defined for development of the CSSCS communications sys tems to begin There seems to be little or no information available on the con tent and intended usage of the Command and Control Database in the CSS units It is difficult to project communications requirements and to develop sys tem interfaces without a good analysis of the nature of the C2 database and its role in the CSSCS One theme which has been present throughout our work and in this report is the importance of portability At this time it appears likely that the CSSCS will run on small computer using UNIX or one of its derivatives The specific hardware and UNIX version are not yet defined Since one of the prime features of UNIX and the C language is portability it would be a serious mis take to write hardware or version dependent code in the development of CSSCS software With a small amount of extra work one can develop code which is easily ported to any UNIX derived system regardless of the hardware chosen The TACCNET system has been run successfully on seven different versionst of UNIX and on five different machinesi A number of issues remain for further investigation in this area These are summarized in Appendix 1 Areas for Further Investigation A separate document Considerations in the Design and Development of Combat Service Support Computer System has been provided as a descrip tion of the TACCNET prototype developed as part of the
456. mand s r Password write ModemFd Command strlen Command sleep 10 Wait to log all the way in return GOOD 3 3 case UNIX IOControl is the default shell if DebugLevel WriteLog Login system is UNIX do FlushModemInput ModemFd ModemFd OpenModem PortName nu e 3 write ModemFd CR 1 refresh login prompt write ModemFd Vin 1 Flush output buffer close ModemFd PromptStr GetPrompt get login prompt if EndsWith UNIXLOGIN PromptStr 2 sleep 2 Simply wait 2 seconds on Honeywell sprintf Command s h r n Name send username ModemFd OpenModem PortName write ModemFd Command strlen Command close ModemFd if DebugLevel WriteLog Login sent login ID Name to modem PromptStr GetPrompt get password prompt if EndsWith UNIXPASSWORD PromptStr sleep 1 Simply wait 1 second for Password sprintf Command s r n Password ModemFd OpenModem PortName write ModemFd Command strlen Command close ModemFd if DebugLevel WriteLog Login sent password Password to modem LoggedIn TRUE we have sent our login sequence else if DebugLevel WriteLog Login didn t get UNIXPASSWORD prompt free PromptStr else if DebugLevel WriteLog Login
457. me as integer values create file amp write JINTACCS message initial main text return name of this army unit C2 database id suppress trailing blanks 3 blsup c Oct 30 10 52 1986 char blsup txt char txt suppress trailing blanks in string pointed to by txt blank string becomes nuli string register int point to last non blank character for i strien txt 1 i gt 0 amp amp txt i I 3 set following character to indicate end of string txt i 1 0 return pointer to blank suppressed string return txt Page build c Oct 30 10 52 1986 Page net h include server h pathname LogFile global LogFile for server routines main argc argv Message Builder main program int argc char argv i char MsgType 10 char Unitid 21 char Priority 10 char DestPath 80 char Imt 2 if 5 fprintf stderr usage 45 MsgType Unit d Priority DestPath n argv 0 exit ERR strcpy MsgType 1 get message name strcpy Unitid argv 2 get unit id strcpy Priority argv 3 get priority strcpy DestPath argv 4 get destpath strcpy Imt leave EXER OPER set blank sprintf Logfile 109 3 109 SERVER use same log file as server request the message and exit this unit is the Originator exit Request MsgType Unitid
458. messages These special messages allow an operator at one node to obtain or modify the network configuration information at other nodes Messages are provided to add delete change and query information at remote nodes Operators may enable or disable the processing of these messages for security reasons 4 20 Screen oriented menu interface for user The TACCNET system is controlled through a screen oriented menu interface on the system console The interface provides command menus and graphic displays to show the state of the system Windows into system log files may be opened and closed as needed Special commands for system initiation termina tion monitoring and maintenance are provided 4 21 Path definitions Operators can define special paths through the network and can assign names to these paths These path aliases can be used for commonly used paths and des tinations to save time and typing 16 TACCNET G36 633 Final Technical Report April 28 1987 5 Summary of Activities In this section the efforts and activities of the project are summarized The term of the project was from September 1895 to May 1986 but the project was a continuation of work from a previous project G36 610 Furthermore work from this project was continued into project G36 655 which began in May 1986 and extends through September 1987 5 1 September 1985 In September the project group worked to maintain and expand the TACCNET prototyp
459. mmands The following is a list of the menu items available from the User Interface in teraction menu of the console program These commands primarily affect the configuration of windows for monitoring the system clear close get new open redraw save speed Erase the contents of a Status Log window so that new status information will appear alone Remove a window and its contents from the screen marking it inactive Use open to redefine a closed window Retrieve a configuration from a previously saved console session Open and repaint windows according to this configuration Define a new system to be monitored in windows 1 and 3 such that the system s queue is displayed in window 1 and its status log is monitored in window 3 This is a fast way to open two windows at once Create a window or modify an existing one to monitor a system queue or status log file Refresh the screen in case of lost characters or display problems Same as typing ctrl L from either menu Write a file from the current configuration defining the windows which are open Use get to retrieve this information later Set the polling speed of the console seconds The polling speed is the amount of time the program waits between updates to open windows Examine the contents of a file in a queue associated with an open queue window Uses the UNIX environment variable VIEWER as the file perusal program Terminate the User I
460. mong network of widely differing machines S 1 CDC IBM 4300 Vax Unix PC over a variety of links 3780 BISYNC asynchronous dialup token ring o Prototype TACCNET using PC Unix and Honeywell GCOS featuring automated routing failure detection and rerouting o Extended TACCNET featuring database backup and recovery file transfer message processing and screen oriented user interface o C2 Database with automated JINTACCS interface JINTACCS screen oriented automated composition tool Source level system portability Simulation of CSSCS network SLAM Overview of Research 1983 1984 Heterogeneous communications _ Low speed asynchronous networks Routing and identification 1984 1985 Development of TACCNET Failure detection and management Automatic routing C database analysis 1985 1986 Expansion of JINTACCS message composition C2 database interface Database backup and recovery User interface Overview of Research 1986 JINTACCS message processing o Analysis of interface between JINTACCS messages and C2 database Functional model of JINTACCS messages o Development of JINTACCS grammar or definition language o Development of a generic JINTACCS message handler parser o JINTACCS message composition aid expansion to include editing capabilities 1983 1984 System Features Terminal one system acts as a console on another system Files may be tra
461. most any desired level of complexity and systems programming features for simple access to UNIX or to other processes Because the CSSCS environment requires real time response to changing condi tions and due to the unpredictable nature of communications in that environ ment a robust flexible timesharing system is desirable The UNIX operating system provides these qualities and offers a greater degree of portability among t UNIX is a trademark of AT amp T Bell Laboratories TACCNET Technical Specification November 14 1986 different types and sizes of machines than any other system currently available The reader of this report is not expected to be a UNIX expert but is expected to be familiar with basic UNIX system concepts including files directories access permissions pipes I O redirection shells shell commands text editors and login procedures Some aspects of the prototype TACCNET system require the editing of configuration files including the system password file It is recommended that the reader study the UNIX system administration manuals carefully before modifying any system files TACOCNET Technical Specification November 14 1986 2 System Overview The CSSCS is intended to perform a prescribed set of functions in a designated environment The details of these functions and the nature of this environ ment impose certain constraints on the system In this section we will define the functions to be performed by t
462. move sprintf IntFileName 55 55 SysName INTFILE break case ABORTED caller c Oct 30 10 50 1986 Page 7 WriteLog Caller operator requested system shutdown break case ERR default WriteLog Caller IOCONTROL returned error ErrMsg Status w Retcode if CheckDown Site record unsuccessful call GiveToMP SysName may need to forward mail quit ERR reset site table entry to indicate successful contact if intFlag Site gt Status UP declare site up Site gt TimeToCall NOW reset time to call Site gt NumCalls 0 reset retry count PutSite Site save entry amp release storage quit GOOD all is well hang up phone amp exit else Connected FALSE remote system didn t answer WriteLog Caller Can t connect to SysName UnLock SysName if Connected FALSE remote system didn t answer if CheckDown Site if site is declared down GiveToMP SysName give messages to MSGPROC else Connected ERR modem didn t answer commands WriteLog 11 we have a problem with the modem at PortName else Condition UP may be DOWN or DELAY if Condition DOWN may need to forward the messages GiveToMP SysName else ValidSite returned NULL WriteLog Caller No entry for SysName defined
463. ms c dsp o dsp c jms h ucc c Mm dsp c form o form c jms h cc c Mm form c 1151 0 list c jms h cc c Mm list c scr o scr c jms h cc c Mm scr c util o util c jms h cc c Mm util c Page 1 jms e Oct 30 10 51 1986 Page file name ams e This file contains extern declarations for global variables abet ea be c eu eee eee ee extern WINDOW main_box_win extern WINDOW main_win extern WINDOW command_win extern WINDOW msg win extern WINDOW status win extern WINDOW view win extern WINDOW view box win extern WINDOW help win extern WINDOW helpcom win extern int X screen position y x coordinate extern int col number of columns for indentation extern int SWITCH Switch Indicator for commander extern int EMPTY TEXT Indicator for empty text extern int SET_STOPPER Indicator for leave the set extern int VI EWED wiew win Indicator extern char ALIAS extern char extern char extern char data field identifier extern char FDESC extern char SCOL J start column extern CHDR extern 11510 head extern listO ptrO extern list extern lsnode tai lls extern csfnode tailecsf extern csdnode tailcsd extern tsnode tail
464. mspol1 PollDelay Value else if EQUALS Key forwarding ForwardFlag Value fscanf ParamFileFp 45 4 Key amp Value fclose ParamFileFp else WriteLog QMS activated One Pass mode in MasterQueue if DebugLevel WriteLog QMS system debug level is Level only allow one copy of QMS at a time qms c Oct 30 10 52 1986 Page if Lock QMS ERR WriteLog QMS can t lock QMS already running exit ERR Remove system ABORT file unlink ABORTFILE process each system queue if QueueList GetSites NULL uses malloc to get storage WriteLog QMS can t get site list GoodByel mi UnLock QMS exit 1 do if Abort MasterQueue Always check for abort signal ShutDown for i20 Queuelist i NULL i i process all the messages in the priority queue first if DebugLevel 2 WriteLog QMS checking PRIORQ while NextFile DeQueue PRIORQ NULL i if DebugLevel WriteLog QMS processing PRIORQ 1 sprintf FileName s s PRIORQ NextFile if GetDest FileName Queue ERR if MovePRI NextFile Queue ERR if Schedule Queue PRIORTYPE GOOD WriteLog QMS can t schedule Queue for priority call if DebugLevel gt 1 WriteLog QMS checking Queuelist i if ValidSi
465. mtag2 str3 ptrOznodeO list c Oct 30 10 51 1986 Page 38 3 Add a SET node in level list H _ ff addinode SETTYP CAT SETID char SETTYP char char SETID listl nodel 1 11511 malloc sizeof listl f the node is the first node of the parent node if ptrO schild NULL ptrO gt schild nodel 1 gt NULL else nodel gt Prev ptrl ptri gt Next nodel nodel gt parent ptrO nodel gt Next NULL switch SETTYP case columnar set nodel uval cschild NULL break case free text set nodel uval tschild NULL break case L linear set nodel uval lschild NULL break nodel gt settyp SETTYP strcpy nodel 5setcat bl strcpy nodel SetiD b sup SETID et ee ee ee ee ee ry Add a field node in level 2 list of the linear set add_1s_node FCAT FNAME fdsc Irj format list c Oct 30 10 51 1986 Page int FNO char FCAT FNAME fdsc Iri ptris 1 1 sizeof 1 f the node is the first node of the parent node if ptrl uval schild NULL ptr1 uval Ischild 8 ptris gt
466. n ptrl ptr0O gt schi ld whi le ptr 1 printf Zs ptrl setid swi tch ptr 1 gt settyp case columnar set convcsflist ptrl uval cschild convesdlist ptr1 uval cschi 1d break case free text set convtsnode ptr1 uval tschild break case L linear set convislist ptr1 uval lschi ld break printf Nn ptri2ptri next ee oe oe ee oe oe oe oe l Get the field level data from the linked lists 2 Convert them into standard output format A _ __f_ __ _ _4_ _1__ __ _ __ _ I I _ _ _ _f_f ff _4 _f _f _4_ _1_4_ _ _ __ _ convlslist ptr lsnode ptr form c Oct 30 10 50 1986 Page 34 printf s ptr gt fval dsp_lin_set ptr gt fchi 1d ptr ptr gt next l Get the field level data from the linked lists 2 Convert them into standard output format convesflist head csfieldnode head int i72 csfieldnode printf n ptr head while ptr n atoin ptr gt colpos strlen ptr gt col pos 1 for i lt n i putchar printf s ptr gt colhdr izi strlen ptr colhdr 1 ptr ptr gt next 1 Get the field level data from the linked lists 2 Convert them into
467. n Lastindex 1 11 Oil i Lube i write data if Fuel i Dash free Fuel i Free data only if Oil i t Dash free Oi1 i if allocated if Lube i Dash free Lube i above fprintf DataFp n write remaining input to tidy up fprintf DataFp n n n no AMPN RMKS no DWNGRADE fclose WorkFp return GOOD 9 makesup c Oct 30 10 52 1986 Page 10 include net h include server h MakeSUP build an input file for AMS to create a SHORTSUP message int MakeSUP DataFp ReqUnitid FILE DataFp char ReqUnit d FILE WorkFp char Command 80 int int Count char Unitid 81 char Item 21 char Model 21 char Quantity 11 char Unit 4 char OnReq char ReqNum 21 write DTGM set to work file for AMS PutDTGM DataFp execute database query for SHORTSUP put results in file for processing sprintf Command 45 5 gt Xs 2 dev null SQL SHORTSUP WORKF ILE system Command if WorkFp fopen WORKFILE r NULL WriteLog MakeSUP can t open work file n return ERR write UNITIDM set to work file for AMS fprintf DataFp XsWXn ReqUnitid fprintf DataFp mark end of UNITIDTM set write 6KSHTSUP set to work file for AMS for Count 0 c getc WorkFp c EOF c getc WorkFp Count i Unitid O char c f
468. n and management o File transfer Electronic mail o JINTACCS to and from C database o Automated JINTACCS message composition interface o Distributed C2 database backup and recovery o Single machine emulation of multiple nodes o Network management functions via messages o Dynamic network configuration Screen oriented menu driven user interface o Message forwarding holding Store and forward message transfer o Automatic routing via shortest path TACCNET Objectives O O O O O Pass JINTACCS messages Detect and handle failures Automatic re routing Dynamic network configuration Messages to and from C database Database backup and recovery User interface JINTACCS message composition aids TACCNET Constraints Ordinary telephone lines 1200 bps transmission rate Auto dial auto answer modems Media transparency TACCS UNIX DAS3 GCOS TACCNET Additional Features Error detection and recovery Data Binary data transfer O Store and forward capability O Priority message scheduling o On line JINTACCS message dictionary O Password security File transfer Electronic mail o Multiple node emulation o Tunable system parameters O Portability all code written in Clanguage o Menu driven system interface TACCNET Composition Communications qms Scheduling caller connections iocontrol transmission Message Generation and Processing genmsg generation ms
469. n file Press CR to return Temp 4 return else if ConfFileFd lt 0 return No great loss for i 0 i lt MAXWINDOWS i i TempWin Window i Win _ Save window pointer Window il Win WINDOW NULL Will make no sense in file Window i Fp FILE NULL Will also make no sense write ConfFileFd char amp Window i sizeof struct window Window i Win TempWin Restore window pointer write ConfFileFd char amp Speed sizeof Speed write ConfFileFd char CurSys sizeof CurSys close ConfFileFd writelog c Oct 30 10 51 1986 Page 64 WriteLog a b c d char b C Language Program Listings for the TACCNET System GCOS Implementation by Principal Investigator Alton P Jensen Professor Project Manager William O Putnam Research Scientist II Project Staff Steven L Goldberg Research Assistant Hong S Shinn Graduate Research Assistant School Of Information and Computer Science Georgia Institute Of Technology Atlanta Georgia 30332 Presented to U S Army Institute for Research In Management Information Communications and Computer Science AIRMICS April 30 1987 Contract 85 00012 Research Project No G36 633 The views opinions and or findings contained in this report are those of the authors and should not be construed an official Department of the Army positi
470. n from the Message Database is used to build a text file containing the message in JINTACCS format 4 2 4 5 Getting Started with the Message System To construct a message at the terminal using operator supplied data the jtgen command is used The usage of this command is jigen priority lt destination where priority is a message priority and lt destination gt is a message destina tion identifier This will start the program which will then prompt the user for all necessary information The system will ask for each item of information and then select the appropri ate course of action For example each message may pertain to an Exercise or an Operation The user will receive the prom pt Enter EXER or OPER gt The user s response may be one of the options or since this set is not manda tory for all messages a carriage return If the operator chooses one of the options the corresponding sequence of fields will be displayed The default option which is the message type other than EXERcise or OPERation can be chosen by pressing the carriage return CR key without typing anything The message title will be prompted for as a field of the MSGID set SET ID MSGID enter MESSAGE TYPE If the message title typed in is not a valid one i e it is not in the message data base warning message will be displayed to tell the user to reenter it Once the system knows the name of the message to be created it can retrieve the
471. n rejected return int NULL Exit gracefully as if nothing happened Create and receive new message for 0 i lt strlen FileName i FileName i toupper FileName i Conver to uppercase FileFp CreateFile FileName MSGPROCQ if FileFp NULL WriteLog GetFile can t open file for message FileName exit RECOVERABLE SendByte ACK Send message acknowledge only when completely ready while TempBuf GetBlock amp BlockLen amp ETXFlag unsigned char NULL Loop for i 0 i lt BlockLen i if TempBuf i DLE itt Skip the first DLE of any pair if i gt BlockLen WriteLog GetFile INTERNAL ERROR unmatched DLE at end of packet data exit INTERNALERROR if TempBuf i r TempBuf i n fputc TempBuf 1 FileFp Write the next character MsgLength BlockLen Keep track of length of entire message if ETXFlag ETX break Leave the loop if end of text received free TempBuf Get rid of storage allocated at top of loop pra FileFp fclose FileFp Write the complete file Find out why we left while loop if pen I unsigned char NULL if ETXFlag ETX free TempBuf Let it go WriteLog GetFile file FileName received OK FileNQ FileName MSGPROCQ Give the file to msg proc return int
472. n the follow ing subsection The queue monitor windows which are located side by side at the top of the screen constantly display the contents of the selected system queues As mes sage files appear and disappear from these queues their contents are updated on the screen so that the user can observe the flow of messages through the system There are only two such windows so the user can change the queues to be monitored using the open command described below The status log windows are as wide as the screen and are positioned one atop the other These windows constantly display the contents of specific system log files see the section on Monitoring as requested by the user Since there are only five lines in each of these windows only the last three to four lines of a log file are displayed when such a window is first opened After that any new log information placed in a monitored file will be displayed in the window and the contents will be scrolled when necessary to present the new status lines ds TACCNET Technical Specification November 14 1986 Queue Monitor 1 Figure 4 12 Layout of the console screen Since there are two of these windows the user can monitor status information pertaining to two systems or system functions at the same time To change the names of the log files to be monitored in these windows the user can execute the open command described below 4 3 5 1 Invoking the User Interfac
473. narios were developed jointly by AIRMICS and Georgia Tech personnel and are intended to be representative of actual field operations which might be per formed by the CSSCS units 33 TACCNET G36 633 Final Technical Report April 28 1987 Appendix 3 TACCNET Presentation Materials The following pages contain copies of the visual aids and presentation materials developed for the IPR and other presentations during the project 94 CSSCS Advanced Experimental Demonstrations 1983 1986 Development of a Tactical Army Command and Control Network TACCNET Objectives To examine issues related to information transfer among loosely coupled occasionally connected heterogeneous asynchronous networks of networks develop a prototype Combat Service Support Computer System and a prototype Command and Control Database to be used in the exploration of CSS information processing requirements Approach Iterative Refinement o Develop expertise o Design and build prototype o Demonstrate capabilities Examine and refine Experimental Demonstrations Advanced Experimental Demonstration AED o Demonstrate capabilities Highlight issues Incorporate previous work Provide recommendations for future work End Product o Working portable full featured prototype o Documentation of issues and concerns Specification for interim fieldable system Accomplishments o Information transfer a
474. nd makes apprepriete ueries of base B Operator uses screen and keyboard to create return message with the desired status 9 DMMC sends 5024 message ta SFO 19 SPO manual request displays message to simulate remcte interface Message should be displayed as beth JINTACCS format with all the slashes and as human readable a friendlier format than JINTACCS CENARIO III This scenaric uses the force level message 5026 FOL Ilecation CSS Ce Information Reguirement 26181 force level interface specification shows this as a message transmitted by CSS to all four nodes CSS Ce Information Requirements Document shows this as a message sent every four hours by supply cempanies and the FOL battalion to the FSE DMMC and CMMC Note at this time it does not appear that there is to celete a FOL location by use of a message The scenario will assume thet all FOL locations cance active will remain active Guantities transmitted are current on hand quantities and changes tc previous messaces essages may be sent by 1 pushing a button that causes tne message to oe automatically formatted and sent c the cleck says time to send a messape and the message is formatted and sent without operator intervention 4 manually emtering message data into screen template 4 automatic response to an automated query again without operator interventior 1 Initially the network consists of the SFO
475. nd that site name WriteLog MakePOL invalid site name Name return ERR if Index Lastindex amp amp Lastindex gt 0 See if flush needed for i 0 i lt MaxLinestl i Flush previous buffers fprintf DataFp 2d n s n s n s n n Lastindex Fuel i Oil i Lube i Write data if Fuel i Dash free Fuel i Free data only if Oilli t Dash free OilL i if allocated if Lube i Dash free Lube i during loop 011 1 Lube i Dash Clear slots MaxLines 0 Reset counter for maximum lines Last ndex index Remember this index to note change switch FOL Determine next column based fuel oil lube case F Ptr char Fuel Point to Fuel slot break case 0 Ptr char Oil Point to Oil slot makepol c Oct 30 10 52 1986 break case L Ptr char Lube Point to Lubricant slot for i O 1 lt 20 amp amp Ptr i Dash i Scan for first empty position in this column Ptr i malloc strlen QtyUnitType 1 Make room for data strcpy Ptr i QtyUnitType Copy data into slot if i MaxLines MaxLines 1 Keep track of maximum depth End of for loop exit at EOF for i 0 i lt MaxLinestl i Flush final buffers fprintf DataFp 2d n s n s n s n
476. ne view win touchwin view box win wrefresh view box win getyx command win LINE COL wclear msg win 15 form c Oct 30 10 51 1986 16 wprintw msg win Press SPACE Bar for More wrefresh msg win wgetchar msg win wclear view win wrefresh view win wmove command win LINE COL wrefresh win wclear msg win wrefresh msg win else wpr intw view_win n fprintf WP imgf Nn ptrizptri Next fclose WP_imgf E 1 Get the field level data from the linear set list 2 Convert them into standard output format convlslist ptr Isnode E getyx view win LINE COL if is last line view win amp amp COL strlen ptr gt fval 1 gt view win maxx wprintw view wprintw view win s ptr gt fval fprintf WP_imgf s ptr gt fval dsp_lin_set ptr gt fchi ld ptr ptr gt Next form c Oct 30 10 51 1986 Page 1 Get the field level data from the linear set list te 2 Display them screen dsp_lin_set ptr Isnode ptr int col 5 while ptr for 1 0 i col i waddch main_win wprintw main_win s s n ptr gt fdname ptr gt fval wrefresh main_win dsp lin set ptr fchild ptreptr Next col 5 1 Get the field level data from the columnar set list 2 Convert them into standard output forma
477. neywell DSP 6 under GCOS A copy of the scenario set used for the demonstrations is provided in Appendix 2 Copies of all presentation materials developed during the project are provided in Appendix 3 A set of data flow diagrams for the main components of the TACCNET system is provided in Appendix 4 TACCNET G36 633 Final Technical Report April 28 1987 2 Overview The CSSCS is intended to perform a prescribed set of functions in a designated environment The details of these functions and the nature of this environ ment impose certain constraints on the system In this section we will define the functions to be performed by the CSSCS and describe the CSSCS environ ment The CSSCS is intended to support the CSS commander on the battlefield at the corps division and brigade levels The term commander is refers to the officer responsible for managing the CSS function at any particular site CSS is defined as the functional areas of supply maintenance field services transportation personnel and health services found in the divisions corps and theater Army 2 1 CSSCS Functions The CSSCS is an information system for the Combat Service Support CSS node of the Army Command and Control System ACCS As such the CSSCS will interface will the other four nodes of the ACCS as well as with other functional systems within CSS e g STAMMIS The interface to exter nal nodes will be via JINTACCS messages both sent and rece
478. nformation Examples of such information include network configuration tables and the unit commander s database This requires the designation of backup sites for each node These need not necessarily be the same as the alternate processing sites for the node but that would be a logical choice To increase the possibility of being able to recover a lost site s information the database should be backed up on more than one remote site each at a different location The system designer must decide how many backup sites to allow or provide and how to insure that they are kept current Another issue is fre quency of backups how often do we take a snapshot of the data for backup When the failure occurs and recovery is desired how will it be initiated A message may be sent to one of the backup sites to request an upload of the last database backup It will be important to know and validate the time of that baekup It will probably be desirable to request retransmission of any messages sent to the destroyed node after the date of the last backup The method for requesting these retransmissions must not flood the network with redundant E EE TACCNET Technical Specification November 14 1986 messages but must make sure that all relevant information is obtained It may be possible to avoid retransmission of old messages by restoring a snapshot backup and updating it from a higher level node 3 1 5 Node Emulation The TACCNET prototype system
479. ng Test and debug GCOS implementation of TACCNET Implement message editor for JINTACCS composition tool Overview Documentation for the Honeywell C compiler was received in December Work began on transferring the UNIX based C code for TACCNET from the PC AT to the DPS 6 The transfer was completed without incident using simple terminal emulation and file transfer programs Initial attempts to compile the C code were moderately successful with most routines compiled on the first try Some compiler differences were encountered and corrections made resul ting in the successful compilation of approximately 95 of the C code A problem emerged when we attempted to link the compiled code into an executable program The linker for the C compiler con tains a bug which prevents programs larger than a few Kbytes from linking We have a call in to Honeywell and are contacting them about a fix In the mean time we will begin making necessary changes that we already know about in the device dependent parts of the system Work proceeded on the database backup and recovery system for TACCNET The system will allow the C2 database files used by UNIFY to be transferred via TACCNET to a designated backup site for safekeeping The files will be stored in a special backup directory on the remote machine and can be retrieved automatically by sending a special network administrative message The user will be insulated from the actual administrative
480. nomaly problems do not occur when data objects are created changed or deleted from the database 4 2 4 2 2 The Message Database The database information for ACCS COM s is managed under the following relational database schema which is the collection of five relation schemas msg mno sets malias sno scat field fsetid fno feat fname feol fdfi fdut dfis ddfi ddut dfdesc dcolhdr dirj dformat cedfi Note that a relation schema is the set of attributes associated with a relation name e g the first relation schema is the set of three attributes mno and malas associated with relation name msg An ACCS COM message is composed of a collection of sets each of which again consists of fields forming a hierarchical structure Relation msg contains only the top level information of every message for its identification A mes sage is assigned a message number mno a long message title and short message name malias which all uniquely identify the message Relation set contains the specification fro all the different sets which may be used to build a message The field tells which message te set belongs to and the sno field specifies the ordering of sets within a message Each set is identified with its set identifier and classified into one of three occurrence categories 5cat mandatory M condit
481. nsferred between systems Asynchronous communication links Three or more machines in network 3 Series 1 s 1 CDC Cyber Positive identification of remote systems 1983 1984 Network Configuration 1984 1985 System Features On demand communications via asynchronous links Bidirectional communications _ Error detecting and error correcting packet oriented protocol Failure detection and rerouting Queue oriented message processing Positive identification of remote systems Plans o Finalize and document TACCNET prototype o Explore JINTACCS message processing issues JINTACCS grammar or definition language Functional definition of messages Message processing tools o Design Command and Control Database Top down design approach Analysis of intended usage user requirements Determine structure and content from usage requirements Interface with JINTACCS Convert to ADA Status o Completed and installed a well defined fully featured prototype TACCNET for CSSCS environment o Developing detailed specification of TACCNET system design and implementation o Beginning first year of two year investigation of automated JINTACCS message processing CSSCS Environment o Nodes subject to catastrophic failures o Nodes are physically mobile but logically static o Frequent expected but unpredictable reconfiguration o Nodes are loosely coupled and occasionally connected o Machines are phys
482. nt and no port is available for the qms to assign no action is taken until a port becomes available If priority mes sages are to be transmitted however the qms will seize one of the ports if there are any ports being used for routine messages alone forcing the process t Concurrent updates to the Port Table are not permitted so as with most tables in the system lock files are used to guard against any concurrent access to the file TACCNET Technical Specification November 14 1986 associated with that port to release it Because a remote system may call the local system at any time lock files are associated with system queues These lock files assure mutually exclusive access to the files within a system queue There can never be two active conversations between the same two sites at the same time because of this since one of the two connections will be dropped when the qms sees the locked system queue Other techniques including more general control of system port assignments and functions are possible and could be considered The specific methods for port management described above contain what seems to comprise the minimal set of functions necessary to provide for multiple port management in this environment 3 3 3 Communications Protocol In addition to end to end error detection the communications protocol must provide certain functions to the network These functions include node identification file identificat
483. nterface and return to the user s shell 75 2 Technical Specification November 14 1986 5 Recommendations and Conclusions In this report we have discussed the major design considerations identified by the project team during the development of the prototype TACCNET system for the CSSCS Some of these considerations are general and will apply to any information and communications systems developed for use in the CSSCS environment Others are dependent on the specific functional requirements of the proposed system It is critical to define and describe the complete set of functions to be performed by the system so that such design considerations may be discussed and resolved before the system is built One theme which has been present throughout our work and in this report is the importance of portability At this time it appears likely that the CSSCS will run on small computer using UNIX one of its derivatives The specific hardware and UNIX version are not yet defined Since one of the prime features of UNIX and the C language is portability it would be a serious mis take to write hardware or version dependent code in the development of CSSCS software With a small amount of extra work one can develop code which is easily ported to any UNIX derived system regardless of the hardware chosen The TACCNET system has been run successfully on seven different versionst of UNIX and on five different machinestf The second h
484. o packet Packet 1 3 data i Transparency already taken care of Ptr j 3 if Ptr gt length PKTOVERHEAD WriteLog SendPacket memory violation building packet Exit INTERNALERROR Packet Ptr Packet Ptr DLE Place Data link Escape before end text marker end ETX ETB End of text or text block Code CheckSum Packet 3 Ptr h Compute checksum on data amp ETX sprintf Packet Ptr 4X Code Now that the packet is constructed send it to low level 1 0 ifdef DEBUG fprintf lt sendpacket c Oct 30 10 51 1986 for isO i Ptrth i4 fprintf tmp 2x PacketLi tmp ness a eRe ese eene An fclose tmp endif Send Packet Ptr 4 Sends a sequence of n characters free Packet Free storage Page 38 setport c Oct 30 10 51 1986 include net h extern int ModemFd Struct termio TTYSet int SetPort Por tName char PortName Open the named port for use by lOControl parameters correctly no buffering Make sure to set the line 1200bps ignore input parity 7 bits out Page 39 even parity out no echo etc Returns ERR if the modem cannot be contacted or ModemFd if all is well Set global variable ModemFd register int O_RDWR if ModemFd open PortName OFlag NULL i Writ
485. ocrmode signal SIGINT SIG IGN Disable interrupts view c Oct 30 10 51 1986 Page 62 if fork 0 0 am the child signal SIGINT S G_DFL addstr Please stand by refresh if Editor getenv VIEWER NULL if Editor getenv EDITOR NULL Editor malloc strlen DefaultEditor 1 strcpy Editor DefaultEdi tor exec Editor Editor MsgName 0 View the file printf n nError could not load viewer editor n printf Define an environment variable VIEWER or EDITOR printf to be the pathname of nthe program you wish printf to utilize here n n n fflush stdout exit 0 else wait int 0 Wait for child to terminate noecho crmode signal SIGINT ExitProcessor CmdPrompt Press CR to continue Temp 2 ReDraw Repaint the screen after viewing writeconf c Oct 30 10 51 1986 Page 63 inelude console h WriteConf write current configuration to the file named void WriteConf cfilename char cfilename File to write the configuration data into sic int ConfFileFd Configuration file pointer WINDOW TempWin Temporary window pointer char Temp 4 int i if strlen cfilename ConfFileFd open cfilename 0 WRONLY O CREAT 0666 if ConfFileFd lt 0 amp amp strcmp cfilename config O CmdPrompt Cannot create configuratio
486. of parameter while getc Fd 12 read the desired file name from the command line fscanf Fd 5 FileName if NewFd fopen FileName NULL create the file WriteLog cannot create FileName return SkipEOL Fd skip to first line of text after command line while c getc Fd EOF copy the body of the message putc c NewFd fclose NewFd WriteLog Save FileName been created return GOOD timetest c Oct 30 10 52 1986 Page 42 include lt stdio h gt include lt sys types h gt include lt time h gt long HashTime main argc argv int argc Char argv long MyTime long UTime struct tm TBuf char TStr 80 struct tm gmtime char ctime long time amp UTime printf Unix time ld 655 UTime ctime sUTime TBuf gmtime amp UTime sprintf TStr Sd d d td d d gt 1 TBuf gt tm_mday TBuf gt tm_year TBuf gt tm_hour TBuf gt tm_min TBuf gt tm_sec MyTime HashTime TStr printf time 14 55 MyTime ctime amp MyTime transfer c Oct 30 10 52 1986 Page 43 include net h Command line format transfer filename taccnet path gt lt filename gt Request a copy of the named file be built into a message and sent to a taccnet site via the given path there to be saved under the
487. of s stopval if process is stopped addcolumn c Oct 30 10 50 1986 Page 7 include console h int CurPos BASECOL AddColumn Given a string to present in a window add it in columnar form into the next valid position Return ERR if there is but one position left in the window so that the more message can be displayed therein int AddColumn str num line char str String to be displayed in the window int num Window number of window into which columnar data is displayed int line Current line number within window if line 0 amp amp CurPos BASECOL 1 Window num Win if line Window num Size 1 if CurPos gt BASECOL return ERR CurPos BASECOL TABSIZE line O wmove iline CurPos wprintw Window num Win 45 str admin c Oct 30 10 50 1986 Page include console h static char DefaultEditor bin vi Admin Provide interface by which knowledgeable user can edit and repair table files including system parameters x void Admin char 801 Temporary storage for CmdPrompt results char FileName 80 char Editor Name of user s editor set in environment char getenv char malloc void ExitProcessor CmdPrompt Enter name of table file to edit i e ports Temp 60 if strlen Temp if Temp O t
488. ogram is invoked with the name of the main directory MasterQueue and will run unti there are no more files in the MSGPROCQ in that directory If it is invoked with the option it will run in the background indefinitely checking MSGPROCQ every 2 seconds pathname MasterQueue pathname NewName OldName char NextMsgName Next message in Message Processor input queue int Result Result from lower level routines int Forever FALSE if the argument is given loop forever char Level 3 string version of debug level FILE ParamFileFp Parameter file pointer char Key 20 int Value int PollDelay 30 interval in seconds between scans void ShutDown Routine to abort system signal SIGTERM ShutDown Set signal handler for TERM signal umask UMASK sprintf LogFile log s log MSGPROC set the global Logfile validate and parse arguments if arge lt 2 gt 4 usage argv 01 while argc O m 1 01 case if strlen argv argc 1 Forever TRUE continuous operation else if 10 sscanf argv argc 2 amp DebugLevel msgproc c Oct 30 10 51 1986 Page 28 sprintf 4 DebugLevel m fprintf stderr illegal option 3 usage argv 0 break default strcpy MasterQueue argv argc g
489. on Initialization lists the commands and their parameters for starting and stopping the network software from the TACCNET administrator s account The section named Monitoring describes the process of detecting the arrival of new messages the generation of outgoing messages and the occurrence of errors at all levels of operation Maintenance covers making modifications of system data files queue clean up procedures and problem resolution This chapter is concerned specifically with software implemented under the UNIX operating system In the following sections file pathname starting with an ellipsis indi cates a path relative to the root of the TACCNET directory structure named during installation For example if the software were installed in the directory usr taccnet the tables sites would be referenced usr taccnet tables sites Do not type the ellipses in any path names 4 3 1 Installation and Configuration The TACCNET system can be installed easily on either an Onyx or an IBM PC AT Other UNIX machines might require some minor modifications but these will not be discussed here Before installation the system manager must decide upon a root directory under which the queues will reside a network name for the node being installed and several other parameters He must also allocate at least one dialin port and at least one d alout port for connections to modem
490. on policy or decision unless designated by other documentation Introduction The GCOS implementation of the TACCNET system is divided into three programs each of which is composed of a number of functions The three programs are GENMSG CALLER and IOCONTROL These are the basic elements of TACCNET necessary for a system to func tion as a TACCNET network node The other TACCNET programs QMS MSGPROC and SERVER were not implemented under GCOS because they are not required for the DAS3 ele ments in the CSSCS network Each function or group of related functions is contained in a file These files are compiled with the M4 CC compller and linked with a main program segment to form an executable program Each program has a primary function called main in the file with the same name as the pro gram 27 All C language source file names end in the suffix Files whose names end in h are header files containing global constants and data structure definitions Files whose names end e contain declarations of external variables to be used by subprograms The job files used to compile and link the TACCNET programs are provided at the beginning of the source listings The reader of this document is expected to be familiar with the contents of the TACCNET technical specification titled Considerations in the Design and Development of a Combat Service Support Computer System wherein the usage
491. on a first come first served basis The system processes all messages as received and tries to deliver them as soon as possible Priority messages however can cause the delay or interruption of routine messages in order to receive fastest possible service The system detects the arrival of priority messages and will insert them into the communications stream ahead of remaining routine messages if possible If necessary the system will automatically preempt a communications port from a routine transmission in order to send off a priority message 4 12 On line JINTACCS message dictionary The TACCNET prototype offers a JINTACCS message composition aid based on an on line JINTACCS message dictionary The dictionary is contained in a set of database relations stored under the UNIFY relational database manage ment system The system can generate messages directly from the C database on command or can be used to prompt the user in sequence for the data to be formatted into JINTACCS message This frees the user from the task of remembering all the rules of JINTACCS 4 13 Password security The TACCNET features three levels of password security First users must supply a password at login time to gain access to a node in the system Second each node must supply a password whenever it logs in to another node to ini tiate communications Third each node can enable or disable access to the net work administrative functions and to the databas
492. on file name CmdPrompt Enter configuration file name ConfFileName 80 WriteConf ConfFileName select c Oct 30 10 51 1986 Page 46 include console h Select Given a window number permit user to move around within that window to select one of the files displayed therein to be edited Return the file s name in the string str void Select num str int num Window number that file is to be selected from char str String pointer to place for resultant string i CmdPrompt Enter message file name str 80 startup c Oct 30 10 51 1986 Page 47 include console h int NeedRead FALSE Flag indicating need to read config char CFileName 80 Global storage for config file name int AskUser TRUE Flag telling to prompt if system down int AutoConfig TRUE Flag indicating load of old configuration extern int CurScreen StartUp initialize global options from argv and data for windows void StartUp argc argv int char argv int i char CurrentDir Pointer to new working directory name char getenv 0 char malloc 0 char MyName Initialize queue and log window structures these are laid out so that changes can be made later to allow windows etc Running console with f will preload better defaults Window 0 Good FALSE Window O Type QWINDOW Window 0 To
493. on required for Task 3 The spec should contain a high level design description user manual and an installation guide A briefing and demonstration were scheduled for February 19 Plans Complete low level I O rewrite for TACCNET on DPS 6 Continue development of screen oriented JINTACCS composition tool Complete install and test database recovery system Arrange for the repair of the PC AT Correct the GCOS C Linker problem and the DEL problem Develop an outline for TACCNET Technical Specification Personnel Alton project administration William Putnam sse cessar essas project management and design Steven Goldberg system design and development SHINN HONG 9 3299 research assistant There are two professional researchers involved with the project Bill Putnam works full time as project manager and chief software designer Alton P Jensen works one quarter time as project administrator There are two students working part time on this project They carry work loads ranging from 12 to 20 hours per week depen ding on availability The hours spent on the project are classified and allocated into five categories A breakdown of labor for the period is given below Category Hours Administration 50 Plamning amp Design 80 Prototyping amp Testing 108 Programming amp Debugging 100 Documentation amp Reporting 28 Total 366 Expenses Expenses for th
494. only supports communication between processes through the software interrupt facility That is a process which has created a subprocess can then send interrupts to the child and receive a return code from the child upon its completion Unfortunately this essentially unidirectional communication requires that a process maintain a list of the process identifications for all of its children so that it can know where to send an interrupt The task of maintaining and validating process information is both difficult and system specific In the TACCNET prototype each asynchronous process is associated with a queue or set of queues in a hierarchical fashion For example the gms works with the highest level TACCNET directory scanning the subqueues for new entries while a given tocontrol process is directly associated with the system queue for which it is invoked This structure permits another form of com munication in which signals are created in the form of specific data files in the queue of the process to be signalled TACCNET Technical Specification Novem 14 1986 This approach is used in the TACCNET system because it is not operating system dependent and it is easy to implement When the qms desires to preempt communications with a remote system to gain access to a dalout modem it sends such signal to the affected process by placing special inter rupt file in the currently active system s queue This fi
495. op depending on the mode selected All three of the aforementioned programs should be running in continuous operation mode for the TACCNET system to be fully functional Other configurations might be desired for testing or for causing a single transaction to occur under controlled circumstances Shell files exist in the bin directory to aid in the starting and stopping of the TACCNET system as well as other interactions with the system Within the bin directory the user has access to the following commands cleanup remove all files from all queues without processing unlock remove all lock files taccnet start the system qms msgproc and server shutdown stop all programs associated with the system These commands need no parameters as they assume con muous operation mode and that the master root directory has been defined in the shell variable MASTERQ The cleanup command will destroy data in all queues causing unprocessed messages to be lost This should only be done if the cir cumstances warrant such action The unlock command should be typed just before starting the system or just after stopping the system to make sure that 61 TACCNET Technical Specification November 14 1986 no lock files are still present These lock files prohibit multiple invocations of TACCNET programs within the same directory structure Typically there will be no need for this command It is only in the case of a complete sy
496. or messages gms always checks the priority queue for new priority messages Any messages found there are moved to the appropriate system queues according to their destina tions The gms remembers which nodes had priority messages and attempts to immediately schedule calls to these nodes before scanning for routine messages in the system queues 4 2 2 2 Caller Dialing and Login Handling The caller process is invoked by the gms with the name of a port to use and the name of a remote system to call The caller validates the site name and looks up the telephone number for the site It then opens the given port and issues commands to the modem to dial the phone It monitors the modem s response codes to determine whether or not a connection is established When the re mote system answers the call caller logs in to the system using its TACCNET node name as its userid and password The userid accounts defined for use by TACCNET are set up to invoke ocontrol as the shell This means that the process is automatically loaded on the remote system and attached to the port used to call into the system Meanwhile the originating system has established that the call was answered and has invoked its own copy of tocontrol in the master mode The two ioconirol processes exchange synchronization information and transmission begins In the event that the call is not answered i e phone busy or no answer the caller receives
497. ormation for each window is kept in the global Window data structure Update num int num Number of window to be updated if IsLogWindow num f the window is a log window Tai lFile num Halfway simulate Unix tail f command else The window must be a queue window DispQueue num Display the queue in window num usershell c Oct 30 10 51 1986 Page 59 include console h static char DefaultShell l bin sh UserShell run a shell for the user such as bin sh Eventually use the environment variable to indicate which shell to run but for now just run bin csh void UserShell char Shell char getenv char malloc int ExitProcessor echo 0 Give user a sane terminal nocrmode move 0 0 addstr x refresh 0 clear refresh signal SIGINT SIG_IGN if fork 0 signal SIGINT 516 if Shell getenv SHELL char 0 Shell malloc strlen DefaultShell 1 strcpy Shell DefaultShell exec Shell Shell 0 printf n nCannot execute user shell Define the SHELL environment printf variable to point nto your favorite shell Could not printf find s Nn Shell printf n n n n nPress CR to return to menu fflush stdout getchar exit 1 wait int 0 signal SIGINT ExitProcessor ReDraw Repaint the windows
498. ort MASTERQ cd SMASTERQ bin startsys 5 startserve serverq Sleep exit O tback Oct 30 10 52 1986 MASTERQ S MASTERQ usr taccnet export MASTERQ cd SMASTERQ DATAI unify db DATA2 file db PATH1 SMASTERQ bin SDATAI PATH2zSMASTERQ bin SDATA2 MYNAME Ccat bin unitid if ne 1 a 57 ne 2 then echo usage 0 sitename exit 1 fi RMASTERQ SMASTERQ if 5 eq 2 then RMASTERQz 2 fi R SRMASTERQ backups if r SPATHI 1 then echo cannot read SPATHI exit 1 fi if r SPATH2 then echo cannot read 5 2 exit 1 fi if fgrep 51 SMASTERQ tables sites dev null then Page 17 echo save SBACKDIR SMYNAME SDATA cat l bin genmsg 2 1 net adm retcode if Sretcode ne 0 then echo backing up SPATHI return code Sretcode fi echo save SBACKDIR SMYNAME SDATA2 cat SPATH2 llbin genmsg 2 i net adm retcode if Sretcode ne O then echo backing up SPATH2 return code Sretcode fi else echo site 1 not found in SMASTERQ tables sites exit 2 fi tload Oct 30 10 52 1986 MASTERQ S MASTERQ usr taccnet export MASTERQ cd MASTERQ MYNAME Ccat bin uni tid DATA l unify db DATA2 file db BACKD R SMASTERQ backups if S ne 1 5 ne 2 then echo usage 0 si tename exit fi RMASTERQ SMASTERQ if eq 2 then RMASTERQ 2 fi PATH 1 SRMASTERQ backups SMYNAME SDATAI PATH2
499. oseWindows exit 1 dispfile c Oct 30 10 51 1986 Page 19 finclude console h DispFile Show the contents of a small data file on the screen prompting the user to press CR to return to normal display void DispFile fname char fname Name of file to display i FILE Fp File pointer for reading from specified file char Temp 8 int fopen fname Try to open the file if Fp FILE NULL i CmdPrompt Cannot open table file Press CR to continue Temp 7 return addstr x Must take care of rampant sticky inverse video bug refresh clear refresh StandOut printw file s contains fname StandEnd addstr Display file while c Fp EOF Loop through the file addch c refresh CmdPrompt Press CR to return to normal display Temp 7 fclose Return used file pointer ReDraw dispqueue c Oct 30 10 51 1986 Page 20 include console h extern int CurPos Di spQueue Display queue contents window num by reading the names of the files in the queue s Unix directory and updating the window to reflect the contents void DispQueue num int num Window number of window in which queue should be displayed i static filename MsgFiles Pointer to list of files in the queue static int CurFilePtr 0 Index of cu
500. ow DFI 150 DUI A01 Set Identifier AMPN C This set is mandatory if reporting additional information pertaining to set 3KCLTHRE Information on additional type of Class III items available and POL servicing capability should be reported in this set Set Identifier RMKS 0 This set is used for any additional required information Set Identifier DWNGRADE This set is mandatory when the message is classified Field 1 Downgrading and Declassification Markings M Enter the appropriate downgrading and declassification markings if the message is classified FI 2 679 DUI 001 MESSAGE NUMBER TITLE PURPOSE 856 POL LOCATIONS POLLOC 026 Ga Gm e Oe eee de b 9 e m ANNOUNCE THE LOCATION AND CAPABILITIES OF POL POINTS TO PROVIDE RESUPPLY SET IDENT EXER OPER MSGID REF AMPN NARR CAT or z moo zm gt mme FIELD NO aw Lad Im C MANDATORY ENTRY FLD DESC COL HEADER POLLOC START FIELD NAME COL J EXERCISE NICKNAME EXERCISE MESSAGE ADDITIONAL IDENTIFIER OPERATION CODEWORD PLAN ORIGINATOR AND NUMBER OPTION NICKNAME SECONDARY OPTION NICKNAME MESSAGE TYPE ORIGINATOR MESSAGE SERIAL NUMBER REPORT SERIAL MONTH QUALIFIER SERIAL NUMBER OF QUALIFIER SERIAL LETTER MESSAGE TYPE COMMUNTCATION TYPE ORIGINATOR DATE OF REFERENCE YEAR MONTH DAY DAY TIME OF REFERENCE DATE TIME GROUP
501. ow for this Other problems related to the configuration of ports have been recorded The system will require some modifica tion of UNIX based code to handle special timeout DEL and BEL situations arising from GCOS limitations on asynchronous reads and writes These changes will be bracketed by ifdef statements in the C code so that they will only be compiled as needed Meetings and Presentations Regular meetings were held to exchange information and present results In addition plamning sessions were called as needed A meeting was held to discuss the content of the Technical Specification There is some uncertainty as to the intended use of the specification More information will be obtained We have become aware of a software product developed by Con sultant s Choice Inc which is purported to be able to read and parse JINTACCS messages Arrangements are being made to inves tigate the product and evaluate its suitability for use in the CSSCS environment presentation by CCI representatives was held at the AIRMICS office A decision was made to examine the system further and to solicit sources for JINTACCS message processing systems for open evaluation Plans Complete the C2 database archive recovery functions Make arrangements to evaluate available JINTACCS message proces sing systems Develop a software test plan for JINTACCS message processing systems Develop and install a screen oriented int
502. pLine 0 Window O LeftSide 1 WindowL O Width 37 Window 0 Size 9 Window 0O LastTime OL Window 1 Good TRUE Window 1 Type QWINDOW Window 1 TopLine 0 Windowll LeftSide 42 Window 1 Width 37 Window 1 Size 9 Window l LastTime OL strcpy Window 1 Name msgprocq Window 2 Good FALSE Window 2 Type LOGWINDOW Window 2 TopLine 10 Window 2 LeftSide 0 Window 2 Width 80 Window 2 Size 5 Window 2 Fp NULL Window 2 LastPos OL Window 3 Good FALSE Window 3 Type LOGWINDOW Window 3 TopLine 16 Window 3 LeftSide 0 startup c Oct 30 10 51 1986 Page 48 Window 3 Width 80 Window 3 Size 5 Window 3 Fp NULL Window 3 LastPos OL if CurrentDir getenv MASTERQ char 0 CurrentDir malloc strlen DEFDIR 1 strcpy CurrentDir DEFDIR Set to default directory strcpy CFileName configZ Configuration file from last run if arge gt 1 We have arguments if argv 1 0 First argument could be pathname free CurrentDir CurrentDir malloc strlen argv 1 1 strcpy CurrentDir argv 1 Get name of working dir argv Skip to the next entry argc while argc gt 1 if stremp argv 1 f 0 if arge lt 3 argv 2 0 strcpy CFileName Read default file else f strcpy CFileName arg
503. peed sizeof Speed read ConfFileFd char CurSys sizeof CurSys close ConfFileFd redraw c Oct 30 10 51 1986 Page 42 include console h extern int CurScreen Current type of screen being displayed ReDraw Repaint entire screen upon request of user void ReDraw int i standend Enforce no inverse video condition move 0 0 addch x refresh clear refresh PrintMenu touchwin Command wrefresh Command if CurScreen SWINDOWS for i 0 i lt MAXWINDOWS i PrintBorder i GoodWindow i if GoodWindow i WindowLi Win wrefresh WindowLi Win Refresh the window PrintTitle i Print window s title else Status TRUE touchwin Command wrefresh Command runshell c Oct 30 10 51 1986 Page inciude console h include wait h include signal h static char DefaultShell bin sh RunShell Run a shell with the user s command in the foreground Return ERR if command could not execute int RunShell shellfile flag char shellfile Name of file to be run by Bourne shell int flag TRUE if user typed command manually i int Result Return code from fork 2 system call char Path hO Storage for complete path name char Temp 80 union wait stat loc char Shell char getenv char malloc void ExitProcessor
504. ply Shortages set is conditional upor data entered in the previeus set and therefore should be prompted fer in cases where it 15 necessary to include the set Data Bases Each TACCS device leok alike will incorporate a command and cortrol data base At this time there is no mandatory recuirement for replication af data bases cach data base will contain the information required by that node to conduct business ta include contingency plans such as rerouting messages Scenarios There are three scenarics Two scenarios are logistics oriented while the third is personnel oriented The three scenarios could fact be performed as integrated scenario however breaking them into individual scenarios allows greater insight into the processing taking place REFERENCES ACCS AS 424 BO4 Interface Specification Far AUG 84 Control Element Interface with Combat Service Support Control Element BCCS nn3 40u90 25 Interface Specification For 23 NOV 84 first draft Air Defense Control Element Interface with Cembat Service Support Control Element 5 83 4020 08 Interface Specificatian Far 42 NOV 84 first draft Combat Service Support Control Element Interface with Intelligence Electronic Warfare Control Element 5 843 40 0023 Interface Specification For Q3 NOV 84 first craft Combat Service Support Central Element Interface with Fire Support Control Element 3 502 0042
505. ports must be configurable for such parameters as baud rate parity and word length To obey conventions of asynchronous computer com munications these ports must be configured as Data Communications Equip ment DCE s which connect to peripherals that will take on the role of Data Terminal Equipment D TE s Based on the decision to define input output ports as either solely or solely d alout there must be at least two ports on fully connected system one configured for and the other for dialout There may be any number of additional ports defined for either dalin or dialout It is not important which type of modem is associated with a port since it need only serve the function of answering an incoming call and connecting the calling system The current TACCNET prototype requires however that all dialout ports be connected to a D C Hayes Smartmodem or a modem with an identical command set 32 TACCNET Technical Specification November 14 1986 3 3 4 2 System Requirements At higher level the computer operating system must provide a versatile inter face to the actual input output ports that will be connected to modems or other devices Because the zeconirol program must be able to adjust the parity word length baud rate and buffering mode of an input output port the operating system must provide an interface for configuring an RS 232 port programmati cally and straightforwa
506. pqty punit ptloc 100 pptname ploc REF pptname TYPE COMB STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING COMB STRING STRING STRING NUMERIC STRING STRING STRING LEN pt t3 C t3 gt ko Ww 00 26 20 LONG NAME lsi lsikey UNIT ID ITEM MCDEL QTY UNIT REQ REQ NO casualties caskey UNI T_ID SC MOS ACTKIA ACIMIA ACTNBC class SC MOS MILPERCL pol polkey Name Type Fuel Oi ll Lube Quantity Unit of Measure ptloc Name Location Figure 4 3 UNIFY schema for prototype Command and Control database The column headed RECORD FIELD lists the record names left justified with the field names indented underneath The number following the record name is an estimate of the expected number of records of that type An asterisk in front of a field name indicates that it is the primary key of the record The column headed by REF is used to indicate the logical relationships that exist between the various files The name of the primary key of another record goes in this column The column headed by TYPE indicates the data type of the field LEN is the display length of the field on screens and reports LONG NAME is a more descriptive name used by SQL UNIFY query language and other system utilities See the UNIFY Reference Manual for further explana
507. procedures and administrative utilities These improvements are primarily of a cosmetic nature and will im prove the clarity and impact of TACCNET demonstrations While the DAS3 described in the CSSCS environment is not required to receive JINTACCS messages from the TACCS at this time it is expected that that capability can be provided during the C code conversion come groundwork will be required so that exis ting C code from the UNIX based TACCS environment can be trans ferred to the Honeywell DPS 6 and retrofitted to run under GCOS Numerous changes will be required due to the disparate nature of the GCOS and UNIX operating systems but the interfaces and Operations of the programs will be the same under both systems Ihe database backup and recovery system is being designed It is expected to involve a combination of shell scripts and C functions Modifications to the MSGPROC system will be required A TACCS computer has been received by AIRMICS is sup plied with the BTOS and DISTRIX 1 0 operating systems An examination of DISTRIX 1 0 uncovered or confirmed numerous deficiencies which have been reported DISTRIX 2 0 is reported to fix some of the bugs Jim Kearns is working on getting a pre release copy An advance copy of the Honeywell GCOS C Compiler arrived but was not accompanied by any documentation Reiko Taylor is working on getting manuals and on expediting our order Meetings and Presentations Regular meetings we
508. ption WriteLog GetFile INTERRUPTED while receiving FileName WriteLog GetFile FileName not saved sprintf TmpFileName s FileName Remove MSGPROCQ Get rid of it Exit INTERRUPTED else if BlockLen MYCAN We sent a CAN because of abort WriteLog GetFile ABORTED while receiving FileName WriteLog GetFile FileName not saved getfile c Oct 30 10 51 1986 Page 13 sprintf TmpFileName s FileName Remove TmpFileName MSGPROCQ Get rid of it ShutDown 0 Shut this thing down else Process errors WriteLog GetFile timed out FAILED 88 sprintf TmpFileName s FileName Remove TmpFileName MSGPROCQ Throw away incomplete file return ERR getheader c Oct 30 10 51 1986 Page 14 include net h finclude iocontrol h include iocontrol e extern pathname QueueName Reference semi global queue name GetHeader read header for next incoming message The message header is merely a packet containing the name of the message file Verify that the message is and transmit ACK if so NAK if message rejected for being a repeat Return EOT if remote has no more files to send int GetHeader messagename char messagename unsigned char ResponseBlock Block from getblock allocated therein int EndFlag
509. ptresf gt dmax DMAX tai lesf ptresf LLL L L LLL NEIDIEZEIIIECZIEIIIEIEIZINCZONIZIE 58 Add data node as the sublevel of the corresponding field node X add csd node SCAT char SCAT register int ksJ3 int n int LIVE FALSE int FIRST TRUE char str 31 csfnode fptr csdnode dptr node fptr ptrl uval cschi d point to the head of field list for js0 fptr j count the fields fptr fptr gt Next allocate storage for pointers to field data nodes node csdnode malloc j sizeof csdnode data nodes dptr csdnode malloc j sizeof csdnode tai ptr str O NULL loop till user enters end of set list c Oct 30 10 51 1986 fptr ptri uval cschild point to the head of field list addscr csline fptr loop through the field nodes gathering data till user says quit for 0 k j 55 fptr k wclear msg win wrefresh msg win atoin fptr colpos strlen fptr colpos 1 wmove main wrefresh main win wget string main win str while EQUALS bl sup str amp amp EQUALS SCAT M amp amp FIRST i wclear msg win mvwaddstr msg win 0 0 The set is MANDATORY mvwaddstr msg win 1
510. qNo SeqNo amp amp HisSeqNo SeqNo 1 RetryCount t Bad data don t go forever SendByte NAK Send negative acknowledgement WriteLog GetBlock Sequence number is bad sent NAK EatModemInput continue Get back to main loop TempBuf PackLen 2 Save TempBuf PackLen 2 7107 Set up EOS for a second sscanf amp TempBuf PackLen 61 Zx amp HisCheckSum TempBuf PackLen 2 c Restore EOS don t worry MyCheckSum CheckSum TempBuf 3 PackLen 10 Compute CkSum if MyCheckSum HisCheckSum Packet in error FlushModemInput ModemFd Make sure buffer is clean SendByte Send negative acknowledgement control WriteLog GetBlock checksum s bad sent EatModemInput else 11 is 0 SendByte ACK Send positive acknowledgement break Leave this loop we have a good packet RetryCount See how long it takes Why did we leave the loop if RetryCount gt MAXRETRY Because of error return NULL We had an error else if SeqNo HisSeqNo SeqNo SeqNo 1 0x100 Set up for next packet if good else goto StartOver Start over if old packet retransmitted Set up return information create block buffer endflag TempBuf ENDFLAG Set return parameter length ENDFLAG 4 Set block length for ca
511. queue char queue Name of queue to be examined filename FileList int i 0 filename GetDir FileList GetDir queue Get queue list if FileList char NULL return 0 while FileList i 0 return 1 1 Page readfile c Oct 30 10 51 1986 Page 41 include console h ReadFile Read configuration file into global memory structures void ReadFile conffilename char conffilename Configuration file name passed in int ConfFileFd Configuration file pointer WINDOW TempMWin Temporary window pointer int 1 ConfFileFd open conffilename 0 RDONLY Try to open file if ConfFileFd lt 0 amp amp strcmp conffilename configZ 0 CmdPrompt Cannot open configuration file Press CR to return conffilename 80 return else if ConfFileFd lt 0 return Could not open previous configuration no big loss for i 0 i MAXWINDOWS i i TempWin Window i Win Save window pointer if GoodWindow i if Window il Fp FILE NULL fclose Window i Fp Close the file if open read ConfFileFd char amp 1 sizeof struct window 1 TempWin Only part that isn t saved Window i LastPos OL Don t remember old position WindowLi LastTime OL Don t remember old mtime read ConfFileFd char amp S
512. quires special error recovery SendByte ACK Acknowledge the NAK to flush Honey buffer sleep 2 fendi f RetryCount sleep 1 Hold off on retransmit for a second in all cases return RetryCount lt MaxRetry Return error condition sendbyte c Oct 30 10 51 1986 Page 30 include net h include Zinclude iocontrol e SendByte send a single control byte followed by End of Message EM and Carriage Return CR as dictated by the low level protocol int SendByte byte unsigned char byte unsigned char Tail 3 ifdef FORHONEY Check to see if Honeywell is ready for entire packet by sending just the first character and checking for BEEP FlushModemlnput ModemFd Clear input buffer before sending write ModemFd amp byte 1 Output the first character to Honeywell while WaitBeep 1 Wait one second for a beep Remote system was not ready keep trying sleep 1 Always wait one second before retrying FlushModeminput ModemFd write ModemfFd amp byte 1 else write ModemFd amp byte 1 See send c endif Tail 0 DLE Tail 1 EM Tail 2 CRET write ModemFd Tail 3 sendenq c Oct 30 10 51 1986 Page 31 include net h include iocontrol h include extern int MaxRetry SendEnq send an enquire signal ENQ and await response with an acknowledg
513. r char site site FILE char char FILE char char portlist GetPorts char StripMe GetPrompt ValidSite ReadSite NewFile GetDir 0 DeQueue FileOpen GetLine GetSites Gets first site from full path a blc d Reads prompt message from modem Validates site and returns pointer to site entry read site entry from stream into struct creates new file in named queue returns name read directory file into an array of filenames get first message name from the filename array open a file in a queue and return Fd returns the name of this site read a line of input and trim off the newline read the PORTTABLE into a structure for use read the SITETABLE get list of site names 9 retcodes h Oct 30 10 50 1986 ifndef define fendi define define define define define define define define define define define define def ine define GOOD GOOD 0 INTERRUPTED ABORTED 2 LOSTCONTACT 10 BADCONNECTION 20 BADREMOTENAME 30 FATAL INTERNALERROR 50 RECOVERABLE 60 MLOSTCONTACT MBADCONNECTI ON MBADREMOTENAME MF ATAL MINTERNALERROR MRECOVERABLE Page 10 lost contact with remote could not connect with remote remote name not defined fatal error internal error problem on local system sysdef h Oct 30 10 50 1986
514. r id at the target site If so the message will be mailed to that user upon arrival at the site destination lt alias gt lt path gt site path path lt site gt lt path gt site user site a network node name defined in the site table user a valid user id on the target site main argc argv int argc char argv i FILE TermFd FILE TmpFileFd filename TmpFileName pathname Path char SiteList MAXSITES 1 char PathList MAXSITES 1 char Priority 2 1 register int Ch register int j k int MakeMessage char BuildPath umask UMASK set log file for WriteLog sprintf Logfile log Xs log GENMSG validate argument count if argc 2 there are at least two arguments usage argv 0O get and validate message priority strcpy Priority argv 1 2 if strlen Priority 1 Priority lt 0 Priority gt 9 genmsg c Oct 30 10 51 1986 Page 3 fprintf stderr invalid priority must be in range 0 9 n usage argv 0 get list of destination sites for j 2 lt j SiteList j 2 malloc strlen argv j 1 strcpy SiteList j 2 argv ij copy the site into the list SiteList j 2 NULL mark end of list for 20 0 SiteList j NULL j PathList k BuildPath SiteList i PathList k NULL mark end of list
515. r queue The Queue List file is a list of queue names each on a new line where a queue name is the simply the name of the node it represents The complete path need not be specified only the name of the queue relative to the TACCNET root directory MASTERQ Figure 4 10 illustrates the structure of this file priority sysa sysb sysc xenair msgprocq serverq Figure 4 10 Queue list file 4 3 4 6 The System Parameters File All configurable system parameters such as retry delays packet lengths and polling intervals can be adjusted by entries in the System Parameters file tables params This file is a standard ASCII file containing parameter value pairs each pair on a line by itself associating the given value with the corresponding parameter 68 TACCNET Technical Specification November 14 1986 System parameters which invariably have defaults if not specified in this file may be tuned by making changes to or adding to the System Parameters file Because of the relationships among the elements of this system the System Parameters file contains parameters for all components of the TACCNET sys tem including the qms the toconirol system the caller the msgproc system and the server Each of these programs examines this file upon startup causing any modified parameters to be recognized throughout its execution Making changes to this file thus requires shutting down the affected component and restarting it
516. ramming language and developed under the ONYX and XENIX operating systems Each of these systems is a derivative of the UNIX operating system The software will run without modification on any UNIX System III machine Software for the DAS3 has been written in C and developed under the GCOS Mod 400 operating system using the M4 CC compiler While there are differences in implementation details between the GCOS and UNIX versions of TACCNET the functionality at the communications and protocol level is the same The message processing and network management levels have not been im plemented in the GCOS version 7 3 Communications Equipment The modems employed in the development and demonstration of the prototype system are D C Hayes Smartmodem 1200 standalone modems These modems are auto dial auto answer programmable asynchronous 1200 bps dev ices intended for use with voice grade telephone lines The TACCNET software uses Smartmodem commands to program the modem and dial the phone thus requiring the use of the Hayes Smartmodem on all dalout lines Any auto answer modem could be used for the dialin lines Each TACCS system must have at least one telephone line for dialin use and one line for dialout use More lines may be allocated for each mode if avail able Section 4 3 explains the configuration of phone lines for the system The DAS3 must have one phone line for dialout use modem on this line must a UP TACCNET G36 6
517. rdly More specifically the software must be able to dis able parity request single character input output disable buffering and force the flushing of input buffers when applicable The TACCNET system relies heavily upon the ability to perform timeouts to control its communications For this reason the computer system must pro vide for aborting a read operation after a specified time threshold is exceeded In the very least the system should allow read operations to be interrupted by external means such as alarm or countdown functions It would be pos sible to implement timeouts using alternative techniques such as busy waiting but these are typically CPU bound and do not facilitate use of absolute time thresholds The computer system must also provide a facility for associating a given dialin port with a process or system login procedure In the case of the latter support must exist for invoking a specified application program to run with a given user account once logged in Since dalin ports will be associated with processes in this way the computer system must provide a naming convention or other access technique for the identification of the current port For example the system will be invoked on a port after a connection has been established and will need to make modifications to the port attributes of the port It will thus need access to the name of the port so tha
518. re held to exchange information and present results In addition planning sessions were called as needed A presentation based on the final report of the previous con tract g 36 610 was given In addition a briefing on TACCNET has been scheduled for December 18 Plans Install the GCOS C compiler Obtain manuals and evaluate the compiler Complete the design of the database backup and recovery system for TACCNET Develop a screen oriented editing interface for the JINTACCS message composition tool Prepare a briefing in TACCNET for presentation in December Personnel Alton P Jensen 499532 project administration William Putnam project management and design Steven Goldberg system design and development Shinn Bong Osee ECRANS research assistant There are two professional researchers involved with the project Bill Putnam works full time as project manager and chief software designer Alton Jensen works one quarter time as project administrator There are two students working part time on this project lhey carry work loads ranging from 12 to 20 hours per week depen ding on availability The hours spent on the project are classified and allocated into five categories A breakdown of labor for the period is given below Category Hours Administration 70 Planning amp Design 100 Prototyping amp Testing 160 Programming amp Debugging 100 Documentation amp Reporting 40
519. readsite o state o stripme o validsite o writelog o putsite o qms In net h iocontrol h iocontrol e wait h sysdef h retcodes h abort o datetime o dequeue o getdir o fileng o fileopen o lockfile oN myname o readsite o receive o receiveh o remove o validsite oN putsite o writelog o archive o iocontrol In net h sysdef h abort o datetime o dequeue o getdir o fileopen o frename o lockfile o remove o writelog o server In wait h lockfile o readsite o ports o myname o fileopen o console stripme o net h stripme c ce c 0 stripme c myname o net h myname c cc 0 c myname c remove o net h remove c cc 0 c remove c fileopen o net h fileopen c cc 0 c fileopen c filenq o net h filenq c cc 0 c filenq c newfile o net h newfile c cc 0 c newfile c datetime o net h datetime c cc c 0 datetime c lockfile o net h lockfile c cc c 0 lockfile c frename o net h frename c cc c 0 frename c dequeue o net h dequeue c cc c 0 dequeue c getdir o net h getdir c Makefile Oct 30 10 50 1986 Page 2 cc c 0 getdir c writelog o net h writelog c cc c 0 writelog c readsite o net h readsite c cc c 0 readsite c validsite o net h validsite c cc c 0 validsite c givetomp o net h givetomp c c 0 givetomp c ports o net h ports c cc c 0 ports c state o net h state c cc c Q state c receive o receive c iocontrol h cc 0 receive c receiveh o receive c iocontrol h mv rec
520. reak strcpy Temp Entries 1 strcpy Entries fj Entries j Gap strcpy Entries j Gap Temp getmenu c Oct 30 10 51 1986 Page 26 include console h extern int CurScreen GetMenu get user s selection of a menu item if available If user does not select a menu item within a certain threshold return with a 1 so that the top level can refresh windows as needed Otherwise return audited input selection EXIT request is 0 errors are also and all other requests are indices corresponding to order in the menu file int GetMenu int c int StopMenu Define interrupt handler for alarm alarm 0 Repeat if CurScreen SSTATUS CurTier 1 Don t permit tier O from status screen PrintMenu signal SIGALRM StopMenu alarm Speed Set alarm for keyboard timeout c getchar Get character from stdin alarm 0 signal SIGALRM SIG if c gt 0 A character was pressed within threshold Switch char c case CurSel 0 CurTier CurTier 1 2 goto Repeat case CurSel 0 CurTier CurTier 0 1 goto Repeat case CurSel 5 1 MenuSize CurT ier goto Repeat case BKSP CurSel CurSel 1 MenuSize CurTier 1 goto Repeat case CTLL ReDraw goto Repeat case getmenu c Oct 30 10 51 1986 Page 27 case r if CurSel MenuSize
521. reak strcpy Temp Entries j strcpy Entries j Entries j Gap strcpy Entries j Gapl Temp EOF PATH ZSYS72 gt UDD gt GOLDBERG gt SUNIX gt READSI C TIME 1987 02 12 1703 44 7 finclude net h site ReadSite Fd FILE Fd ReadSite read site entry from the stream Fd into a site structure allocated here return pointer to struct site Site int int 1 0 pathname TempBuf Site site malloc sizeof site fscanf Fd Zs TempBuf Site gt SiteName malloc strlen TempBuf 4l strcpy Site gt SiteName TempBuf fscanf Fd Zd Zd 2148 Zc Zs amp Site gt Status amp Site gt NumCalls amp Site gt TimeToCall amp Site gt SysType TempBuf Site gt Password malloc strlen TempBuf 1 strcpy Site gt Password TempBuf SkipEOL Fd phone numbers begin on next line c getc Fd read the array of phone numbers while 1 NL amp amp c BLANK amp amp c FIELDMARK amp amp i c EOF amp amp i lt MAXPHONENUMS ungetc c Fd fscanf Fd Zs TempBuf Site gt PhoneNum i malloc strlen TempBuf 1 strepy Site gt PhoneNum i TempBuf 1 SkipEOL Fd go to next line c getc Fd and get the first character Site gt PhoneNum i NULL mark end of list return Site EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt READST C TIME 1987 02 12 1705
522. remains return Result int NULL ACK NAK Return acceptance flag EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt SENDNA C TIME 1987 02 12 1717 47 1 finclude net h include iocontrol h include iocontrol e SendName send this system s node name to remote system for secondary login and identification Remote system needs to know who called so it can check for outgoing messages for that system SendName char ThisSiteName Name of current site int SiteNameLength Length of site name to transmit int GoodResult Result from sendblock call int EndFlag TRUE End of text flag for sendblock int Length Length of response buffer not used int Result Result from waitack ThisSiteName MyName Get the name of this node SiteNameLength strlen ThisSiteName FlushModemInput ModemFd Clear input buffer before sending name Send the block and wait for an acknowledge GoodResult SendBlock ThisSiteName SiteNameLength EndFlag FlushModemInput ModemFd Get rid of possible extra information if GoodResult WriteLog SendName could not achieve validation from slave exit LOSTCONTACT Now acknowledge login must get double acknowledge Result WaitAck See if remote sends an acknowledgement if Result NAK WriteLog SendName BAD SITE NAME remote does not know me
523. remote node has answered is busy or has not answered the call This will require interaction with the modem Once the remote node has answered the process must log in to the remote node and start up a cooperating process to talk to Errors or problems during the login and synchronization must be detected and handled recovering when possible The TACCNET system uses simple finite state automaton to handle the login and handshaking with the remote system Once the connection has been established the caller process can turn the con nection over to another process which will manage the conversation This pro cess could be a subroutine of the caller process but may be better implemented as a separate process for reasons described above When the conversation is complete it will be the responsibility of the caller process to make sure that the connection is broken and that the phone is hung up properly The modem may need resetting to prepare it for use by the next caller 3 2 2 2 Dialing and Error Detection In order to establish a connection between nodes the originating node must connect to a modem and instruct the modem to dial the phone number of the remote node It is possible that nodes may be configured with more than one dialin line in order to reduce connection failures due to busy lines The system site table described fully in section 4 3 4 1 must then contain a list of phone numbers for each node in the network When a caller
524. rent file e The checksum is a four byte value calculated from the characters in the text block The EM End of Message indicates the end of the packet Figure 4 1 Data packet format Under normal conditions all data packets are acknowledged with an ACK Acknowledgement code and the next packet if any is transmitted Thus the scheme is one of a stop and wait nature where the window size is exactly 1 packet This window size was chosen because the propagation delay for ground communications signals using telephone lines is typically negligible relative to the speed of transmission Increasing the window size does not seem beneficial given the project s test bed environment Control packets are used for synchronization and acknowledgement They are three bytes long and have the form shown in Figure 4 2 below The control code field consists of a single character control code as described above The DLE and EM indicate the end of the packet The following codes are currently used ENQ Enquire ACK NAK and CAN cancel The ENQ control code is used to establish synchronization at the onset of communications The ACK and NAK codes are used to acknowledge or reject packets The CAN control code instructs the receiving system to cancel or abort a connection immediately DLE Figure 4 2 Control packet format This limits the range of packet numbers to 0 255 Since the window size of the protocol is only 1 pa
525. requests the line if Preemption QueueName We must relinquish this line SendByte EOT Other system will understand WriteLog SendFile INTERRUPTED while sending filepathname i Exit INTERRUPTED else if MasterMode amp amp Abort We have been asked to shut down SendByte CAN Other system will know why we stopped WriteLog SendFile ABORTED while sending filepathname ShutDown BlockSize 0 while BlockSize lt MaxBlock Blocks may overrun by at most 1 if c getc FileFd EOF break Exit the loop if end of file within a block c c amp unsigned int Oxff Just keep the bottom 8 bits if DLE Check for data link escape in file BlockPtr BlockSizet c Go ahead ifdef FORHONEY if c n c Nr Convert NL to CR for Honeywell fendi f BlockPtr BlockSizet c Place character in block We have a block now transmit it EndOfText c We read an end of file end with ETX if SendBlock BlockPtr BlockSize EndOfText Send amp Wait SendFile Timeout awaiting acknowledgement 1 WriteLog SendFile Could not transmit filepathname return ERR Probably lost contact sendfile c Oct 30 10 51 1986 Page 34 WriteLog SendFile message filepathname sent fclose FileFd free B
526. rge 4 2 4 6 2 Relational Database Management Systems The selection of a suitable relational DBMS for the project required some time In the end we were limited by the lack of availability of systems which would run on all of the machines in the AIRMICS testbed Early work on the mes sage database was done using the INGRES relational database system on the VAX computer belonging to the School of Information and Computer Science at Georgia Tech The first attempts at a prototype C database were also made 56 TACCNET Technical Specification November 14 1986 using INGRES When the UNIFY system was purchased and installed the rela tional schemas developed under INGRES were ported over to UNIFY In the process of porting the relational schemas and system software over to UNIFY some observations about both systems were made INGRES provides Embedded QUEL EQUEL an embedded query language for use from user written C programs EQUEL statements which are almost identical to QUEL are preceded by the and embedded in C programs These statements are translated into standard C program statements by the EQUEL pre processor The translated statements define variables and execute functions from the INGRES library This level is transparent to the program mer who sees only the EQUEL statements For its C language interface UNIFY supplies only the library functions used to perform relational operations The programmer must learn how
527. rgv j k SiteList j 2 k tolower argvljl k1 Add amp convert to lower SiteList j 2 strlen argv j 73407 SiteList j 2 NULL mark end of list for 0 j 0 SiteList j NULL j PathList k BuildPath SiteList j PathList k NULL mark end of list if PathList 0 NULL fprintf stderr no valid paths specified n usage argv 0 read the message into a temporary file sprintf TmpFileName ZsZd TEMPFILEHEAD NOW if TmpFileFd fopen TmpFileName w NULL ry if Ch getc stdin EOF empty message not allowed fprintf stderr Sorry empty messages are not allowed n fclose TmpFileFd if unlink TmpFileName ERR delete the temporary file WriteLog GenMsg can t unlink TmpFileName exit ERR while Ch EOF copy text till end of file putc Ch TmpFileFd Ch getc stdin fclose TmpFileFd else fprintf stderr Can t allocate tmpfile for message input exit ERR for each path in PathList generate a message and enqueue it for 0 PathList j NULL j if CiMakeMesaaps Priority PathList jl TmpFileName fprintf stderr can t generate if unlink TmpFileName ERR delete the temporary file WriteLog GenMsg can t unlink TmpFileName This function will generate a message for the site given in SiteName wi
528. ried this is the earliest time to attem pt to reconnect to the site 4 3 4 2 The Path Table The file tables paths contains routing information for systems than cannot be reached directly through this system This information is used by the Mes sage Generator genmsg to determine a path to a site A path must be specified for each site in the Site Table even if the site is directly accessible The Path Table is composed of records indicating all paths to a particular site name structured such that the site name is preceded by a colon and the associated paths are listed on a separate lines each composed of site names separated by exclamation points where the sites are traversed left to right Figure 4 7 is an example path table to illustrate the format t If a site is directly accessible by this system it should have an entry in the Path Table with its path set to its site name with no exclamation points xenair sysa xenair xenair sysa xenair sysd xenair sysa sysd xenair honey sysd sysd sysalsysd xenair sysd nair sysa Figure 4 7 Path table file Under the current implementation the first path listed for a site is always taken as the shortest path 66 TACCNET Technical Specification November 14 1986 4 3 4 3 The Port Table The file tables ports contains information about which I O ports are to be used as dia
529. ring EM Tail 2 CRET Always terminate with a carriage return Force Honeywell to flush output EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt SENDBL C TIME 1987 02 12 1713 19 4 finclude net h finclude iocontrol h finclude iocontrol e SendBlock send a block to the remote system until received correctly or until retry limit is reached int SendBlock data length endflag unsigned char data Data to be transmitted null terminated int length Length of block in bytes can t use string fns int endflag Flag indicating this is the last block of a message int RetryCount 0 Count of number of negative acknowledgements while RetryCount lt MAXRETRY Do not try forever FlushModemInput ModemFd Dump the garbage SendPacket data length endflag Try to send the packet if WaitAck int NULL SeqNo SeqNo 1 2 0 100 Give us next 2 byte sequence no break Exit loop acknowledge received return RetryCount lt MAXRETRY Return error condition EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt SENDBY C TIME 1987 02 12 1713 57 5 include net h include iocontrol h include 1 SendByte send a single control byte followed by End of Message EM and Carriage Return CR as dictated by the low level protocol int SendB
530. rk Completed Item Complete C2 Database Backup and Recovery system design 2 Initial code development Remote backup system Database recovery Archive search amp retrieval Alternate database site operations Testing and integration Work for Task 1 DPS 6 PASCAL to Conversion Source code transfer 1 IOControl system Caller GenMsg Integration with TACCNET Work for Task 2 Technical Specification 0 Performance and Cost Report Contract Number DAHC06 85 C 0012 Project Number G 36 633 Georgia Institute of Technology October 1 1985 to October 31 1985 Overview A task plan for the project is being prepared for presenta tion to AIRMICS Work areas will include UNIX GCOS conversion of TACCNET JINTACCS message preparation facilities C2 database backup and recovery and TACCNET user interface development The database backup and recovery system is being designed It is expected to involve a combination of shell scripts and C functions Modifications to the MSCPROC system will be required A TACCS computer has been received by AIRMICS It is being installed and will be brought up under UNIX if possible Plans are to port TACCNET to the new system as soon as possible An advance copy of the Honeywell CCOS C Compiler arrived but was not accompanied by any documentation Reiko Taylor is working on getting manuals and on expediting our order Meetings and Presentations Regular meetings were
531. rm of a TACCNET Technical Specification November 14 1986 data packet preceding the message text to be transmitted The receiving node validates the message name packet sending an acknowledgement and assigns this file name to the data that follows Immediately after acknowledging the file name packet the receiving node will transmit a file acceptance acknowledge ment indicating whether or not it will accept the file If it rejects the file transmitting a negative acknowledgement the sender will delete the file from its queue and proceed with any more files it might have to send Otherwise the sender will transmit the packets that compose the message Yet a third level of identification takes place within packets To ensure that synchronization is maintained between two systems packets are numbered rela tive to a given session These numbers are incremented each time a new data packet is prepared for transmission Packets that have to be retransmitted in case of error maintain their identity to ensure the order of the packets within the received file Because of the nature of the protocol only two unique packet numbers are required although the current implementation allows for 256 dis tinct packet numbers Packets are considered to be in error if they contain packet numbers not within with the expectations of the receiver 3 3 3 2 Message Rejection Because each message that travels throughout the network must have a unique name i
532. rn GOOD file is now locked int UnLock FileName returns ERR if the file could not be unlocked GOOD otherwise char FileName i pathname LockFile int Resul t 0 sprintf LockFile Ss LCK FileName ockfile c Oct 30 10 50 1986 24 Result unlink LockFile if Result ERR WriteLog UnLock can t unlock LockFile P return Result myname c Oct 30 10 50 1986 Page 25 include net h MyName Return the name of this site found in the file MYNAME char MyName sitename TempSiteName Temporary storage for site name FILE MyNameF d MYNAME file descriptor char RetPtr Pointer to return to caller if MyNameFd FileOpen MYNAME MASTERQ r NULL fprintf stderr MyName don t know my own fclose MyNameFd return char NULL Try to recover fscanf MyNameFd 55 TempSiteName Get this site s name fclose MyNameFd RetPtr malloc strlen TempSiteName 1 Get perm storage strcpy RetPtr TempSiteName return RetPtr newfile c Oct 30 10 50 1986 Page 26 include net h NewFile build a file name in the directory given by Queue with a in front of the name to make it invisible Return the name of the file in FileName Open the file and return a file descriptor The file name will be composed of the system name plus a date time stamp FILE N
533. rn code for old messages ASCII control codes used throughout ifdef PROTOCOL DBG define STX define ETX define EOT 0 define ENQ E define ACK A define DLE define NAK N define ETB B define CAN C fdefine EM felse define STX char 0 02 Start of text define ETX char Ox03 End of text define EOT char 0x04 End of transmission define char 0x05 Enquire define char 0 06 Positive acknowledge define DLE char OxlO Data link escape define char 15 Negative acknowledge define ETB char Oxl7 End of text block define CAN char 8 Cancel session abort define EM char 9 End of message endif fdefine MYEOT char 0x74 Return code saying we were interrupted define MYCAN char 0x78 Return code saying we were aborted iocontrol h Oct 30 10 50 1986 iocontrol function headings for calls int CheckSum FILE CreateFile void Exit 0 unsigned char GetBlock int GetFile 0 int GetHeader unsigned char GetPacket int Preemption int Receive int Send int SendBlock int SendByte int X SendEnq int SendFile int SendHeader int SendName int SendPacket int WaitAck int WaitName common global variables are in the file P
534. rocess each of fuel oil lube if pone QtyType i sscanf QtyType i ld 3st s amp Quantity Unit Type fprintf DataFp 1 1 1 1 PtName ndex 1 FOL i Quantity Unit Write data record fclose DataFp Close output data file Rum DBLOAD command to update pol records sprintf Command Xs file db pol 5 pol sp gt dev null 2 gt gt dev null DBLOAD WORKFILE postpol c Oct 30 10 52 1986 Page 18 system Command Cannot check error conditions simply 7 WriteLog PostPOL Command FAILED WriteLog PostPOL unable to update pol data return ERR return GOOD postsup c Oct 30 10 52 1986 Page 19 include net h include server h int PostSUP MsgFd FILE MsgFd char Ptr char Name 80 int LastLine FALSE Set after last line read char Command 80 char Quantity 10 char Unit 10 char Item 20 char Model 20 char Comments 20 char Req char ReqNum 10 int Result int Found FALSE int ComLen FILE DataFp fopen DATAFILE w Open output data file Result fscanf MsgFd 1 Name skip down to UNITIDM set while Found amp amp Result EOF if EQUALS Name UNITIDM Found TRUE else SkipEOL MsgFd skip to next set Result fscanf MsgFd 1 Name keep
535. roject File Procurement GTRI Supply Services Other Duane H Angela DuBose Russ Embry FORM OCA 69 285 Performance and Cost Report Contract Number DAHC06 85 C 0012 Project Number G 36 633 Georgia Institute of Technology September 13 1985 to September 30 1985 Overview The project group continued to maintain and expand the TAC CNET prototype system Improved login handling and broadcast mes sage handling are under development Error logging and message tracking systems have been improved Other planned improvements to TACCNET include screen editing capability for JINTACCS mes sages console monitoring facilities for network observation mes sage display utilities for demonstrations robust login proced ures and administrative utilities The Honeywell GCOS C compiler has been ordered and is ex pected to arrive in October Preparations are underway to tran sfer all TACCNET source code from the IBM PC AT to the Honeywell DPS 6 Substantial changes will be required in the I O routines due to differences between UNIX and GCOS The database backup and recovery system is being designed It is expected to involve a combination of shell scripts and C functions Modifications to the MSGPROC system will be required Meetings and Presentations Regular meetings were held to exchange information and present results No special meetings or presentations were held Plans Obtain and install the GCOS C compiler Transfer TA
536. rrent filename static pathname QueueName Name of the current queue int Line 0 Current line on queue window filename GetDir 0 f list exhausted or new queue read again for more file names CurPos BASECOL if stremp Window num Name QueueName CurFilePtr 0 MsgFiles CurFilePtr NULL if Changed num If window Window num has not changed return MsgFiles GetDir Window numl Name Load directory structure strcpy QueueName Window numl Name Reset queue name CurFilePtr 0 Reset list index wmove Window num Win 0 0 if MsgFiles NULL wclrtobot Window num Win wrefresh Win return Format display now given that the files are in the data structure while MsgFiles CurFilePtr NULL amp amp MsgFiles CurFilePtr NULL if AddColumn MsgFiles CurFilePtr num amp Line ERR Add data wmove Window num Win Window num Size 1 Window num Width 10 wprintw Window num Win wrefresh Window num Wi CurFilePtr 2 0 return No need to continue if out of space in window dispqueue c Oct 30 10 51 1986 Page 2 CurFilePtr 0 CurPos 0 wrefresh Window num Win Repaint window expand c Oct 30 10 51 1986 Page 22 include console h Expand Make one large window out of two similar windows to occupy the same space void
537. rrors associated there with log msgproc monitor the Message Processor by listing all messages processed by the system as they enter or prepare to leave this site log sysname monitor the zocontrol program during its conversation with the re mote system indicated by syaname Indicate transmission errors successful con tact termination etc sysname may be any valid remote system name defined in Any attempt to monitor a system that has not yet created a log file will result in an error message saying that the log file cannot be opened This means that there is currently no log file to examine Either create the log file yourself or wait and try the command later Monitoring log files can help the system administrator keep track of incoming files that might need manual processing When new files enter the system they are always placed in the queue for the Message Processor msgprocq The files are processed by msgproc if it is running and placed in either a remote system s queue such as sysa the server s queue serverq the local system queue If there is an error files are placed in the directory errorq Messages with bad headers or headers that contain sites which are unreachable are placed in the error queue It is the TACCNET system administrator s duty to periodically examine these queues for possible problems and resolve them either by editing the files and moving them to their proper places or by remov
538. rvention TACCNET G36 633 Final Technical Report April 28 1987 3 Design Issues The design issues involved in the development of the TACCNET system are discussed fully in the technical specification and will not be repeated here We will however highlight the major design decisions made in the course of the system development The design issues to be discussed in this section are those which impact the system at the top level These decisions had a major impact on the nature of the software developed and on its functionality 3 1 Network Topology The Army is organized in a hierarchical fashion with responsibilities distributed among various internal organizations These organizations are related through the chain of command in a formally defined hierarchical manner The organi zations within CSS which use the CSSCS will have a defined hierarchy and it is reasonable to assume that their reporting and communications will observe this hierarchy For our purposes communications will be in the form of JIN TACCS messages transmitted among CSSCS nodes 3 1 1 Connectivity Two types of networks are possible a fully connected network in which any node can contact any other node as needed or a polled network in which some nodes are only contacted by other nodes at specified intervals The TACCNET prototype is a fully connected system This choice was made to insure that im portant messages of high priority would not have to wait for a hig
539. s printw Xd NumFiles move y COL4 4 StandOut for i 0 i lt NumFiles amp amp i lt 79 COL4 4 i addch if NumFiles gt 29 addstr b clrtoeo StandEnd End of major while feof status c Oct 30 10 51 1986 Page 55 wclrtobot stdscr fclose SiteTableFp signal SIGINT ExitProcessor Restore interrupt vector WrapUp UnLock SITETABLE refresh void LocalExit UnLock SITETABLE Exi tProcessor Now you can exit tailfile c Oct 30 10 51 1986 Page 56 include console h define BUZZER 5 Buzzer set for 5 seconds int Buzzer FALSE Timer sets Buzzer after while TailFile read and display contents of a file starting at the current file position until end of file The file descriptor and the curses window are given by the Window global structure indexed by input parameter num Don t run more than BUZZER seconds TailFile num int num Window number of window into which file should be listed i char String 150 Storage for each line to be read and displayed FILE Fp File descriptor for window char Result int i char fgets long ftellQ void SetBuzzer Signal catcher for alarm signal SIGALRM SetBuzzer Fp Window num Fp Ease naming convention if Fp NULL We will need to open it before we continue Fp fopen W
540. s and phone lines The first steps of the installation must be done from the system administration account root The following steps should be fol lowed to install TACCNET on a new machine 1 Create a root directory e g usr taccnet for TACCNET change to that directory and load the TACCNET system from diskette See tar 1 in the UNIX System III manual for informa tion on loading from tape or diskette 2 Edit the file etc group and add a group named taccnet to that file The actual group number is unimportant and may be set to any value that is valid for the local environment 3 Change the group ownership of all files in the TACCNET directory structure to be taccnet An example method for doing this is to change to the chosen root directory for the system and then to type the command chgrp taccnet 1 A single physical machine might take on the role of several network nodes if the TACCNET directory structure is installed under different root directories each configured as a new node 59 TACCNET Technical Specification November 14 1986 4 Place an entry in etc passwd for this node Set its name to be the name chosen for the node being installed Set its group number to be the same as that of the taccnet group created in step 2 above Set its home directory to be the TACCNET root directory and set its startup shell be the the ocontrol program specifically bin iocontrol example
541. s and the remote site sends any messages in its queue The two weontrol processes are identical and will continue to switch roles and exchange messages until both sites have emptied their queues The UNIX operating systems allows direct interprocess communications only between parent and child processes This makes it difficult for cooperating asynchronous processes to interact in a well defined manner Most UNIX implementations do not provide semaphore operations or other means for processes to synchronize operations or control resources This means that the system developer will need to provide such facilities in the system Many UNIX based software systems handle interprocess communication through disk files Presence or absence of a special file can be used to indicate interrupt condi tions flag errors or exchange critical information among processes This method is slow and cumbersome but is portable to all UNIX systems and is therefore in wide use It is also possible to have a master process spawn all sys tem processes as its children and then act as a switching center for communica tions using signals and waits In any event there will be need for limited interprocess communications among the CSSCS components The system developer should attempt to use standard interfaces and communications methods which will be easily portable 3 2 1 2 Directories as Queues It is convenient to implement individual messages in the system as text
542. s extra character is not considered part of the protocol If a packet s checksum does not match the receiver s expectations or if a packet is received improperly for any other reason the receiving system transmits a control packet containing a NAK Negative Acknowledgement code This causes the sender to retransmit the packet with a limit of five retries After the retry limit has been reached both systems abort assuming serious line problems It is then the responsibility of the originator to reat tempt the connection at a later time The GCOS 400 operating system used by the DAS3 is such a system 41 TACCNET Technical Specification November 14 1986 packe number STX lt text gt DLE ETB cksum DLE EM The packet number is two byte value in ASCII as described above The STX indicates the start the text block The text is a variable length sequence of characters The maximum block length is adju stable in the software Each block will be filled to the maximum length except for the last block read from the file which may be shorter Any occurrences of the DLE character are doubled to permit transparency e To insure transparency the DLE Data Link Escape precedes all control information The ETB position contains either an ETB or an ETX ETB represents the end of a block indicating that there are more blocks to come ETX indicates that the block is the last block in the cur
543. s is invoked on local system umask UMASK sprintf LogFile log s log IOCONTROL validate and parse arguments if arge lt 1 gt 4 usage argv 0 iocontrol c Oct 30 10 51 1986 Page 19 argc if lar av ar gc 01 amp amp argv arge 1 d sscanf 2 amp DebugLevel if arge gt 2 master mode mode MASTERINIT Enter INITIALIZATION as MASTER strcpy QueueName argv 1 X Place queue name in local var strcpy RemoteName argv Remember name of remote ModemFd SetPort argv 2 Open modem as instructed if ModemFd NULL Could not do it i WriteLog loControl FAILED opening argv 2 modem Exit FATAL The modem should have been available abort if ParamFileFp fopen PARAMFILE r NULL fscanf ParamFileFp 5 Key amp Value while feof ParamFileFp amp amp ferror ParamFileFp i if EQUALS Key preemption CheckBetween Value else if EQUALS Key timeout TimeOut Value else if EQUALS Key timeout gcos HoneyTime Value else if EQUALS Key blocklength BlockLength Value else if EQUALS Key blocklength gcos HoneyBlock Value else if EQUALS Key maxretransmit MaxRetry Value else if EQUALS Key archiving Archiving Value fscanf ParamFileFp s
544. s of operations could be performed on remote nodes through the use of a special class of administrative messages Addition and deletion of nodes should be handled automatically upon receipt of a message defining the action to be taken Special messages should be provided to query a remote node s configuration tables and return the results of the query It will be desir able to be able to change or update information in the configuration tables of remote sites by sending messages All this implies that the system will need to be able to examine incoming mes sages and determine whether or not they are administrative messages Mes sages will need to be identified by type for ease of processing These capabili ties can be combined with other message processing functions described below in asystem message processor to be run continuously at each node 3 2 5 2 Electronic Mail amp File Transfer File transfer capability is basic to the operation of the CSSCS network Though the primary usage of the system is expected to be the transmission of JIN TACCS messages it is easy to piggyback an electronic mail system on top of the basic network This could be used for document and file transfer system backups administrative messages and so on The only cost is a little extra 9 TACCNET Technical Specification November 14 1986 programming in the message processor to recognize user mail messages or file transfers and pass them on to the opera
545. sagename Message file name unique throughout network FILE FileFd int BlockSize Size of each block transmitted unsigned char BlockPtr int EndOfText unsigned int c int MaxBlock Depends on FORHONEY ifdef FORHONEY MaxBlock HoneyBlock else MaxBlock BlockLength Maximum length of data in a packet endif if FileFd fopen filepathname r NULL WriteLog SendFile cannot open message file filepathname return ERR Begin message introduction session if SendHeader messagename ACK Send header for message name WriteLog SendFile filepathname rejected by remote return NULL Normal return just don t send file Remote will accept message begin transmission if Preemption QueueName SendByte EOT Other system will know WriteLog SendFile INTERRUPTED while sending filepathname Exit INTERRUPTED else if MasterMode amp amp Abort SendByte CANCEL connection WriteLog SendFile ABORTED while sending filepathname Oct 30 10 51 1986 Page 33 ShutDown Definitely abort BlockPtr unsigned char malloc MaxBlock 1 Allocate storage EndOfText FALSE Set to transmit ETB after each block while EndOfText Loop until all blocks are sent if CheckBetween First of all check to see if a higher entity
546. scanf WorkFp cX c cX 51 Unitid i Item Model Quantity Unit amp OnReq ReqNum blsup Unitid suppress trailing blanks if EQUALS Uni 1 ReqUnitld fprintf DataFp s Xs s n blsup Quantity blsup Unit blsup Item blsup Model if OnReq Y fprintf DataFp ReqNum else fprintf DataFp A2 n makesup c Oct 30 10 52 1986 Page 11 SkipEOL WorkFp Skip to the next line End of for loop exit at EOF if Count WriteLog MakeSUP database query failed workfile empty 1 return ERR fprintf DataFp n mark end of columnar set write key to comments field in AMPN set fprintf DataFp DENOTES ITEM ON REQUISITION NUMBER FOLLOWING n fprintf DataFp Al 15 REQUISITION NUMBER 2 DENOTES ITEM NOT fprintf DataFp REQUISITION n fprintf DataFp n n no RMKS no DWNGRADE fclose WorkFp return GOOD post c Oct 30 10 52 1986 Page 12 include net h include server h int Post MsgType Originator MsgFd char MsgType char Originator FILE MsgFd i register int Result ERR switch MsgType O case case case case case s case 5 default CASSTATS 5006 Result PostCAS MsgFd break POLLOC 5026 Result PostPOL break SHORTSUP
547. sfully contacted and the site is restored to active status The system keeps track of the current state of each node and keeps a record of the last successful contact as well as the number of failed attempts to contact a down site Sites are declared to be down when the number of failed contact attempts exceeds a user determined threshold 3 3 Failure Management The discussion of message rerouting brings up the topic of link failure There are different classes of failures which the system must be able to recognize and handle The system may be limited in its ability to recognize some types of failures by the limitations of the communications equipment t In any event the system must be smart enough to distinguish between local failures eg can t dial out and remote failures eg no answer or no login at remote modem 3 3 1 Classes of Failures The first class of failure is the local failure This includes conditions such as no available ports no response from local modem modem unable to dial out and inactive phone line These conditions indicate local hardware or system prob lems and should not count against the remote site s connection history They should not be considered when trying to determine whether a remote site is up or down The proper response to these conditions will usually be to notify the operator and wait for correction of the situation The incident should be logged automatically so that patterns of performance may be
548. smit acknowledge signal waitname c Oct 30 10 51 1986 Page include net h iocontrol h include iocontrol e Wai tName wait for the remote system to identify itself and return error status if timeout occurs Send acknowledgement signal if valid name received This ensures security and facilitates bidirectionality of system int WaitName RemoteName 45 sitename RemoteName Name of remote system storage must be pre allocated unsigned char ResponseBlock Block from getblock allocated therein int EndF lag End of text flag needed for getblock int BlockLength Length of block remote name returned if ResponseBlock GetBlock amp BlockLength amp EndFlag NULL Unexpected condition no error handling here WriteLog WaitName did not receive remote name SendByte Make sure remote knows there s a problem Exit BADCONNECTION Synchronization bad at initial connection if BlockLength gt SITENAMELEN Don t permit overindexing Remote system name is not of proper form WriteLog WaitName remote name is not of proper form 1 SendByte NAK Tell remote there s a problem free ResponseBlock Exit BADCONNECTION Move site name to caller s storage NOTE may still be bad data strncpy RemoteName ResponseBlock BlockLength We allow
549. sole program is first invoked the TACCNET interaction menu is available at the bottom of the screen The user can alternate between this menu and the other by simply pressing the slash key See the previ ous subsection for information on selecting menu items to execute User Inter face commands Ne TACCNET Technical Specification November 14 1986 4 3 5 2 1 TACCNET Interaction Commands The following is a list of the menu items available from the TACCNET interac tion menu of the console user interface Detailed usage of each command will not be given at this time admin command shell sites status exit Edit a configuration file in tables using the editor defined by the UNIX environment variable EDITOR Execute a single line TACCNET command using the shell defined by the UNIX environment variable SHELL Any UNIX command can also be entered Display the contents of the file tables ports Run an interactive shell using the shell defined in the UNIX environment variable SHELL The console will return when the user exits the shell Display the contents of the file tables sites Display graphic representation of queues and ports for system monitoring Return to main menu by choosing Status option again Terminate the User Interface returning to the user s shell ELLE TACCNET Technical Specification November 14 1986 4 3 5 2 2 User Interface Interaction Co
550. sor and record the pid for stopsys nohup msgproc SMASTERQ 5 gt nohup out 6 echo MASTERQ bin pids start the queue manager scheduler and record the pid for stopsys nohup qms SMASTERQ nohup out amp echo gt gt SMASTERQ bin pids S touch usr spool uucp LCK transmit 13 stopserve Oct 30 10 52 1986 Page 14 MASTERQ S MASTERQ usr taccnet export MASTERQ cd SMASTERO bin if r spids then echo SMASTERQ bin spids file found exit fi if s spids 1 then echo SMASTERQ bin spids file is empty exit fi kill the processes listed in the spids file and remove the file echo killing server in SMASTERQ kill 215 cat spids rm f spids dev null 2 61 stopsys Oct 30 10 52 1986 Page 15 MASTERQ usr taccnet export MASTERQ cd SMASTERQ bin if r pids 1 then echo SMASTERQ bin pids file not found exit fi if s pids 1 then echo SMASTERQ bin pids file is empty exit fi kill the processes listed in the pids file and remove the file echo killing message system in SMASTERQ if kill 15 Gcat pids then rm f pids dev null 2 gt 51 cd SMASTERQ gt rm f LCK dev null 2 61 rm f tables LCK dev null 2 gt 51 rm f usr spool uucp LCK transmit dev null 2 gt 51 taccnet Oct 30 10 52 1986 Page 16 Start TACCNET communications queueing and db server systems MASTERQ S MASTERQ usr taccnet exp
551. ssability The console program will automati cally operate within the TACCNET root directory as defined either by the environment variable MASTERQ or by a command line parameter at invoca tion This program resides in the directory bin Essential to the User Interface is the organization of the terminal screen into windows The terminal screen is divided into five windows a command menu window located at the bottom of the screen two queue monitor windows at the top of the screen and two status log windows in the center These win dows are state in that they occupy fixed positions on the screen but all can be closed or opened at will by the user with the exception of the command menu window Figure 4 12 shows the relative positions of the windows on the stan dard console screen The command menu window displays the commands available to the user for modifying the state of the User Interface and for interacting with the TACCNET system There are two command menu levels corresponding to the two func tional modes The user can move between alternative menus by pressing the slash key The user can choose a menu item in one of two ways he can type the single digit number above the item he desires without pressing any other keys or he can select the item using the space and backspace keys to move between items and the carnage return key to choose an item once selected An explanation of each menu item command is given i
552. ssage incomplete fclose DataFp postpol c Oct 30 10 52 1986 16 return ERR SkipEOL MsgFd RemLen strlen Remainder Compute length of string if Remainder RemLen 1 amp amp Remainder RemLen 2 i LastLine TRUE This is the last line Remainder RemLen 2 0 Remove those unsightly slashes RemLen 2 Compensate for i RemLen i gt 0 66 Remainder i 12 i Skip to beginning of last field if i Q WriteLog PostPOL syntax error decoding 3KPOLLOC set IS ny 1 DataFp return ERR strcpy Location Remainder i 1 Copy last field into Location Remainder i 0 Stuff end of string before last field strcpy Name Remainder Move name to permanent home blsup Name Suppress trailing blanks Place names into table for later cross reference if Index 19 WriteLog PTNAME index too large 20 fclose DataFp return ERR PtName ndex 1 malloc strlen Name 1 Allocate storage strcpy PtName Index 1 Copy name to table fprintf DataFp 4s s n Name Location Write temporary data fclose DataFp Close output data file LastLine FALSE Reset flag Run DBLOAD command to update database before beginning next section sprintf
553. stPath 5555 Path SiteNamet strlen FirstSite else FirstSite is not defines in Path or Site table if site and path are undefined message may be for a user or x a deactivated site so pass it on to msgproc for disposition else site is defined in Site table strcpy DestPath SiteName first site is defined RetVal malloc strlen DestPath 1 strcpy RetVal DestPath return RetVal int usage name char name fprintf stderr usage s priority dest dest name exit ERR 5 validpath c Oct 30 10 51 1986 Page include net h int ValidPath Site Path char Site char Path FILE PathTableFd char SomeSite 128 register int c if PathTableFd fopen PATHTABLE r NULL fprintf stderr ValidPath Can t open PATHTABLE exit 1 getc PathTableFd skip first colon do fscanf PathTableFd s SomeSite get a site if EQUALS SomeSite Site PathTablefd read NL fscanf PathTableFd s Path fclose PathTableFd return TRUE else TP PathTableFd while c FIELDMARK 66 EOF PathTableFd while c EOF fclose PathTablefd return FALSE 6 SERVER This section contains the functions used only by the Database Server program SERVER File Files Files Files Files Files File File Fi
554. stSite assume the message is for me or a user at my site FixPath FALSE don t remove myname from path strcpy NextSite FirstSite assume message stays here If it is a message for me to relay to another site then we must remove myname from the path and get the name of the next site for validation and message disposition If FirstSite MyName then the message isn t for me and we simply forward it to the correct site The variables NextSite FixPath 31 process c Oct 30 10 52 1986 Page 32 and FirstSite are already set correctly by the code above if NewPath NULL 56 EQUALS FirstSite ThisName FixPath TRUE remove myname from the path StripMe NewPath NextSite set NextSite to next site in path free ThisName strcpy Queue NextSite if MsgFile O leave CCs alone otherwise set priority Type CCTYPE else if High Priority priority messages get special treatment Type PRIORTYPE strepy Queue PRIORQ else Type ROUTINETYPE Now we validate the destination site and place the message in its proper queue if SiteEntry ValidSite NextSite NULL For user or program FixPath FALSE strcpy Queue MSGPROCQ give it to MP to process if ValidUser NextSi te it is for a known user if EQUALS NextSi te NETADMIN Type ADMINTYPE network administrati
555. stem failure that it will be necessary The shutdown command does not automati cally remove these lock files To start the system under normal conditions type taccnet from the bin directory t Several other commands are available to selectively start and stop portions of the TACCNET system These commands typically have the form command dN The parameters are described for each command below The optional dash hyphen after the command name sets the mode to continuous operation Oth erwise the mode defaults to one pass The option sets the optional debug level for the system to the value of IN Values from 1 to 3 result in the printing of increasingly detailed debugging information in system log files The debug option is not normally used The following commands can be used to selectively start and stop portions of the system startsys start the gms and msgproc programs using the root directory for the system as defined in the environment variable MASTERQ Note that the server is not started with this command Startserve start the server program alone stopsys terminate both qme and magproc stopserve terminate the server For example to start the D ata Base Server alone operating in continuous opera tion mode one would type startserve To stop the server one would sim ply type stopserve 4 3 3 Monitoring Most errors that occur during the execution of the taccnet syst
556. stributed Database Consistency redudancy fault tolerance TACCNET Technical Specification Appendix IT TACCNET Data Flow Diagrams 19 November 14 1986 Legend Module entry and exit points i Flow program control ee Flow of data to from disk files or program modules Command line arguments OR gt from user or parent program Program control statements t Flow of data to from tables or messages files file Flow of data files to from E directories queues meros _ Special entry and exit points vere Cerrorextt X for errors and procedure calls priority temporary message text file et arguments destinations rom user command message text MEN path table expand and validate destination paths message myname build a message for AR each destinastion lt temporary message text file put messages into message processor input queue masterq get arguments from user system scan mode command set working parameter directory and operating file debug level parameters read in list of sites to monitor site table addition to priority queue messages found check for messages in priority queue move messages to appropriate system queues and schedule priority callers for appropriate sites no messages messages found check for
557. t convesflist head csfnode head int i22 csfnode ptr if is last line view win touchwin view box win wrefresh view box win win LINE COL wclear msg win wprintw msg win Press SPACE Bar for More wrefresh msg win wgetchar msg win we lear view win wprintw view win wrefresh view win wclear msg win wrefresh msg win form c Oct 30 10 51 1986 Page 18 wmove command win LINE COL wrefresh command win else wprintw view win Nn fprintf WP_imgf n ptr head while ptr i atoin ptr colpos strlen ptr colpos 1 for s i lt n waddch view win fprintf WP imgf a wprintw view win s ptr gt colhdr fprintf WP_imgf s ptr gt colhdr izi strlen ptr colhdr 1 en 1 Get the field level data from the columnar set data list 2 Convert them into standard output format convcsdlist head csfnode head i int ls Je Ka int LR csfnode fptr csdnode dptr fptr head point to the head of field list for j 0 fptr j count the fields fptr fptr gt Next allocate storage for pointers to column value lists dptr csdnode malloc j sizeof csdnode set pointers to column lists for k 0 fptr head fptr 56 k dptr k fptr gt fchild fptr fptr gt Next while dptr
558. t be capable of both calling remote systems and receiving calls from remote systems the issue of assigning ports for these functions must be addressed Two approaches can be taken to configuring communications ports for this purpose One technique is to multi plex each port between both of these functions Each port on the system would then be capable of both dialing a remote node and receiving calls from a remote node Another technique is to reserve a select number of d alin ports and a select number dalout ports which do not overlap The dial ports would only receive calls from remote systems while the dialout ports would only be used to connect to remote systems In either scheme once a connec tion is established between two systems data can flow in either direction TACCNET Technical Specification November 14 1986 In considering the tradeoffs involved in implementing each of these techniques it was decided that the most important parameters in analyzing their workability are the minimum number of ports necessary for full network capability the portability of the software required to implement each scheme and the com plexity of implementation of such a system The port multiplexing technique offers the ability to fully utilize all communica tions ports on a given machine so that the number of ports necessary is minimized However in considering the details of such an implementation it was found that the level of complexity of
559. t c sitename Priority Destination Target SiteName pathname Command FILE SiteFd FILE PipeFd char ThisName Pointer to this site s name ThisName Get the name of this system rewind MsgFd get priority and originator address _fscanf MsgFd X c s Priority SkipEOL MsgFd next line SkipEOL MsgFd skip the To line fscanf MsgFd c s Destination read the From line SkipEOL MsgFd E next line skip past any old headers to command line while c getc MsgFd HEADERLINE Ski pEOL MsgFd ungetc c MsgFd get the name of the site to be examined second word on command line fscanf MsgFd s Target if strlen Target 0 WriteLog ExamineSite invalid command line d return ERR if Lock SITETABLE GOOD i WriteLog ExamineSite can t lock SITETABLE return ERR build command string for popen to genmsg program sprintf Command s bin s 5 Xs MASTERQ GENMSG Priority Destination open pipe to genmsg write site entry data if PipeFd popen Command w NULL i WriteLog ExamineSite can t open pipe Command examinesite c Oct 30 10 51 1986 Page 12 UnLock SITETABLE return ERR if SiteFd fopen SITETABLE NULL WriteLog ExamineSite can t SITETABLE pclose PipeFd UnLock SIT
560. t is possible to assure that redundant messages or those which have already been received by a given node are not wastefully retransmitted During communications between two nodes each message is identified by its network wide message name as described above Since each message received by a system is locally archived a given node can determine if it has already received a message based on this identification and thus reject the message if it is redundant For example when a database recovery is initiated by a node which has just re entered the network a broadcast message is transmitted requesting that all other nodes in the network retransmit archived messages for that node Broad cast messages are propagated in a redundant fashion to all nodes in the net work In other words some nodes may receive several identical messages from different sources With message rejection only the message identification packet for a redundant message is transmitted since the receiver will reject messages it has already received Thus redundant database recovery requests are not transmitted greatly decreasing message traffic where possible 3 3 3 3 Preemption and Cancellation 30 TACCNET Technical Specification November 14 1986 There are several cases in which the transfer of messages between two CSSCS nodes must be interrupted Two such cases are the preemption of connections for priority traffic and the cancellation of connections by opera
561. t it can configure the port and begin com munications Above all the computer system must support an architecture for multi programming There should be operating system support of functions to permit application software to create and execute specified processes wait for their com pletion and receive status information after they are done The UNIX System operating system under which the entire prototype CSSCS has been developed fits all of these criteria and was chosen for this rea son The prototype will operate in most System III and System V derivatives including XENIX and DISTRIX Other UNIX implementations such as Berke ley UNIX perform most of these functions as well although the CSSCS is not guaranteed to be compatible with these TACCNET Technical Specification November 14 1986 4 TACCNET Prototype Specification In the following sections we will describe the prototype system developed at Georgia Tech as part of a series of Advanced Experimental Demonstrations for AIRMICS The system has been dubbed for Tactical Army Com mand and Control Network TACCNET provides connectivity and communica tions among the nodes of the Combat Service Support System It allows these nodes to exchange information in the form of JINTACCS messages text files electronic mail and distributed database backups The prototype system sup ports a small set of CSS applicable CCS messages and offers a r
562. t least one telephone line for use and one line for d alout use More lines may be allocated for each mode if avail able Section 4 3 explains the configuration of phone lines for the system The DAS3 must have one phone line for d alout use The modem on this line must 35 TACCNET Technical Specification November 14 1986 be a Cermetek Infomate 1200 bps modem The proper configuration of the Honeywell port is explained in section 4 3 4 1 4 Software The TACCNET prototype system provides automated database operations for a sample set of three JINTACCS messages These messages may be generated from information stored in the prototype C database or they may be used to update information in the database These functions are provided by the data base server program and are dependent on the presence of the rela tional database management system The dbms must be configured to include the relations defined for the database prototype which is described in section 4 2 4 UNIFY is a trademark of the UNIFY Corporation 36 TACCNET Technical Specification November 14 1986 4 2 TACCNET System Overview The TACCNET software is composed of three major subsystems The Commun ications system handles reception and transmission of messages The Message Processing system examines messages and processes them according to type and content The Database Server system handles all messages originating from or posted to t
563. tPorts NULL i WriteLog FreePort can t read port list to mark Port UnLock PORTTABLE return ERR for i20 PortList i NULL i if EQUALS PortList i gt Port Port Found TRUE break if Found WriteLog FreePort can t find Port in PORTTABLE UnLock PORTTABLE free PortList return ERR free PortListli Site PortList il gt Site malloc strlen E PortList i gt Site free PortList i gt State AVAILABLE if pum PortList ERR WriteLog FreePort can t write port list to mark Port UnLock PORTTABLE free PortList return ERR UnLock PORTTABLE free PortList return GOOD int PutPorts PortList portlist PortList xk Writes the contenets of PortList over the current Assumes the PORTTABLE is LOCKED in use in use FILE PortTableFd register int 1 if PortTableFd fopen PORTTABLE r NULL WriteLog PutPorts can t open PORTTABLE for update return ERR for is0 PortList i NULL i fprintf PortTableFd ZcZs Zs FIELDMARK PortList i gt Port PortList il Site PortList iJ gt State fclose PortTableFd return GOOD portlist GetPorts Reads the PORTTABLE and builds structure of port entries Uses malloc to get storage for the struct Returns a pointer to the struct PortList
564. tant defining window type of LOG define QWINDOW 2 Constant defining window type of QUEUE define SWINDOWS Standard console windows screen define SSTATUS 1 System status screen define CLEAR 0 Clear one of the windows define CLOSE 1 Close one of four static windows if open fdefine GETCONF 2 Retrieve a saved configuration define NEWSYSMON 3 Monitor new system define OPEN Open one of four static windows _ REDRAW 5 Repaint the screen in case of a problem define SAVECONF 6 Save configuration fdefine SPEED 7 Set polling interval faster or slower define VIEW 8 View a message file using define ADMIN 10 Administer file in tables fdefine COMMAND 11 Run a shell command from bin fdefine PORTS 12 Display current ports table define SHELL 13 Let user run a shell bin csh define SITES 14 Display current sites table define STATUS 15 Display system status up down define MENUFILE menufile File name for menu file current dir define DEFDIR usr taccnet Default TACCNET directory Macro definitions for use with window structure define WindowOut win str waddstr Window win Win str fdefine tsLogWindow win Window win TypezzLOGWI NDOW define IsQWindow win Window win Type QUEUE def ine GoodWindow win Window win Good struct window int Good
565. te Queuelist i gt SysType EMULATED continue sprintf LockName 5 1 Queuelist i if Fd open LockName 0 RDONLY gt 0 close Fd if DebugLevel WriteLog QMS Queuelist i is locked else if DeQueue Queuelist i NULL if DebugLevel WriteLog QMS processing Queuelist i switch Schedule Queuelist i ROUTINETYPE case BUSY all ports are in use wait for one if DebugLevel WriteLog Schedule waiting for a Caller qms c Oct 30 10 52 1986 Page terminate HI sleep 110 1 break case GOOD break case ERR default WriteLog QMS can t schedule QueueList i for routine call break if Abort Master Queue Always check for abort signal ShutDown end of for loop if Forever sleep between polls sleep Pol lDelay while Forever run only once unless option was set free QueueLlist release storage WriteLog QMS processing complete normal termination UnLock QMS unlock the QMS guard exit 6000 int usage Name char Name forintf stderr usage 45 directory Name exit 1 9 qms c Oct 30 10 52 1986 Page 10 void ShutDown WriteLog ShutDown operator requested system shutdown UnLock QMS exit 0 schedule c Oct 30 10 52 1986 Page 11
566. ter of 500 or 125 of approved proposal budget category Equipment Title vests with Gov t 211 192553 ae gt e N Meu o 2 gat E eX gt t vr dx pom ER S COPIES TO SPONSOR S 1 D 02 102 017 86 001 Project Director Procurement GTR Supply Services GTRC Research Administrative Network Research Security Services Library Research Property Management Project Fite Accounting Research Communications 2 Other A Jones GEORGIA INSTITUTE OF TECHNOLOGY OFFICE OF CONTRACT ADMINISTRATION _ v N SPONSORED PROJECT TERMINATION CLOSEOUT SHEET ps 7 1 3 8 7 Project No G 36 633 5 1 5 includes Subproject No s N A 2 Project Director s A P Jens n GX Sponsor U S Army Information Systems Selection amp Acquisition Act vity Title Combat Service Support Systems Advanced Experimental Demonstrations AED Effective Completion Date 6 12 86 Performance 6 12 86 Reports Grant Contract Closeout Actions Remaining X Final Invoice or Final Fiscal Report Closing Documents Final Report of Inventions x Govt Property Inventory amp Related Certificate Classified Material Certificate other Continues Project No Continued by Project No COPIES TO Project Director Library Research Administrative Network GTRC Research Property Management RREK Erur KIX Accounting P
567. ters are read return a null string char GetPrompt char ptr char TempBuf 80 int i50 int c fprintf stderr About to try to read login prompt n fflush stderr while i lt 80 read until timeout or overflow if Receive ERR ERR means timeout so exit break else TempBuf i buffer the character increment counter TempBuf i 710 mark end of string fprintf stderr Got a string from the modem it was s n TempBuf fflush stderr ptr malloc strlen TempBuf 1 allocate storage strcpy ptr TempBuf copy the string if pete if strlen TempBuf gt 0 if string is not empty WriteLog GetPrompt got ptr from modem else WriteLog GetPrompt timed out on Receive return ptr return a pointer to the string EOF PATH ZSYS72 gt UDD gt GOLDBERGOUNIX gt GIVETO C TIME 1987 02 12 1620 13 4 finclude net h int GiveToMP SysName char SysName Move all messages that are not courtesy copies over to the msgproc queue We have to look out for case where nothing remains in the queue except CC messages DeQueue will keep giving us the names of the CC files forever if we don t detect this state and exit the loop We do this by saving the name of the first CC encountered and checking it against later CC files When it is see for the second time we will
568. th appended The last token in the path may be a user id at the target site If so the message will be mailed to that user upon arrival at the site destination lt alias gt lt path gt lt site gt lt path gt path lt site gt lt path gt lt site gt lt user gt site a network node name defined in the site table user a valid user id on the target site main argc argv int argc char argv FILE TermFd FILE TmpFileFd filename TmpFileName Pathname Path char SiteList MAXSITES 1 char PathList 1 char Priority 2 1 register int Ch register int j k char InFileName int MakeMessage char BuildPath FILE freopen set log file for WriteLog sprintf LogFile log Zs log GENMSG validate argument count if argc lt 2 there are at least two arguments usage argv 0 Get possible alternate input file name if strcmp argvlarge l IN 0 InFileName argvlargc freopen InFileName stdin arge 2 get and validate message priority strcpy Priority 11 if strlen Priority 1 atoi Priority lt 0 atoi Priority gt 9 fprintf stderr invalid priority must be in range 0 9 n usage argv 0 get list of destination sites for j 2 j lt argc j SiteList j 2 malloc strlen argv jl 1 for 0 lt strlen a
569. th invalid or unreadable headers New messages just entering the system Messages which received a NAK during transmission Priority messages Routine messages Messages with invalid path specifications User mail messages cumwuzezmuuluo When a new message is generated it is labeled as type M and placed in the msgprocq msgproc examines the message header to determine the priority and destination of the message Priority messages are labeled type P and placed in the priority queue Routine messages are labeled type and placed in the system queue corresponding to the desired destination Destination paths are composed of a string of TACCNET node names separated by the exclamation point character If the destination path contains more than one site name the message is placed in the queue corresponding to the first name on the path list If msgproc cannot understand the message header it wil attempt to determine the nature of the problem and label the message accordingly types S H and E before placing the message in the errorq 4 2 3 2 Message Forwarding If the caller determines that a site is down and cannot be contacted it delivers all messages queued for that site to the Message Processor for forwarding to a backup site The file alternate site table contains a list of sites and their back ups A site may have more than one backup site defined they are listed in order of preference The caller changes the
570. th the body of text contained in the stream Fd Return value is TRUE if operation succeeds FALSE otherwise int MakeMessage Priority Path Name char Priority char Path char Name FILE MsgFileFd FILE Fd filename MsgFileName Sitename FirstSite register int Ch StripMe Path FirstSite Get the first site in the list create a message file to hold the message if MsgFileFd NewFile MsgFileName MESSAGETYPE FirstSite NULL stderr GenMsg create s n MsgFileName return FALSE write the message header into the message file fprintf MsgFileFd gt s n gt Zs n gt s n Priority Path MyName Fd fopen Name r reopen the message text while Ch getc Fd EOF copy the message text pute Ch MsgFileFd fclose MsgFileFd FileNQ MsgFileName FirstSite put message in proper system queue return TRUE This function will build a network path to the site given in SiteName The SiteName may be a path alias an absolute path or an alias with an absolute path appended Return value will be a pointer to the constructed path or NULL if the path was invalid char BuildPath SiteName char SiteName char RetVal pathname DestPath pathname Path Sitename FirstSite char strchr validate or expand the first site on the path if strchr SiteName NULL strcpy FirstS
571. that many of these issues were tradeoffs between performance and functionality That is increased functionality could be achieved only at the expense of reduced performance in some related area The decisions made in the development of the prototype tend to lean in favor of performance and simplicity of design or implementation The TACCNET system was intended to demonstrate capabilities and is not suitable in its current state for a fielded operational environment TACCNET Technical Specification November 14 1986 3 1 High Level Issues The design issues to be discussed in this section are those which impact the sys tem at the top level These decisions will have a major impact on the nature of the software to be developed and on its functionality Many of these issues are not clearly defined at the time of preparation of this report Further refinement of the functional description of the CSSCS and its internal and external interfaces and operations will be required before all of these issues can be fully resolved 3 1 1 Network Topology The Army is organized in a hierarchical fashion with responsibilities distributed among various internal organizations These organizations are related through the chain of command in a formally defined hierarchical manner The organi zations within CSS which use the CSSCS will have a defined hierarchy and it is reasonable to assume that their reporting and communications will observe this hierarchy
572. ting system for handling This is partic ularly easy to do on UNIX systems where the files can be piped into the mail program which then takes over responsibility for delivery 3 2 5 3 Path Validation Each message that comes into a node whether from a remote node a local user or a process must be examined to determine its destination The net work path to that destination must then be determined and validated Unk nown destinations or invalid paths must be detected and handled Messages with valid destinations must be placed in the proper system queues correspond ing with their destinations Some messages will be bound for users or processes at the destination node eg a database server and must be identified as such This requires that a local message processor examine each message determine its proper disposition and take appropriate actions 3 2 5 4 Message Forwarding In the event that a message cannot be delivered to the intended destination some process must take charge of the message and decide what to do with it It may be that the proper action is to hold the message until the desired site returns to action Alternatively the message may need to be rerouted to some alternate site for processing We have already discussed the issue of message routing and alternate sites Here we point out that these functions are best carried out by the message processing part of the system 3 2 5 5 Message Holding In the event that
573. tion note error in log file Receive Mode INTERRPUT check for INTERRUPT signal condition o CANCEL not found got EOT Send Mode getfile ID packet got ID packet es see if file is already in Lu PUN send NAK the archives decline file no posee receive file and send ACK move file to msgproc queue no got EOT yes reset ALL DONE msgprocq
574. tl is to return instead of waiting for the carrier esp XENIX Hayes modem switches must be uudduuud for use with this system usup d down This allow use of modem for dialin and dialout without special cables jumpers or switch manipulation i register int OFlag 0 RDWR O NDELAY if ModemFd open PortName OFlag ERR i WriteLog OpenModem Can t open PortName return ERR if ioct ModemFd TCGETA amp TTYSet ERR get old modem settings 23 WriteLog OpenModem Can t get old modem settings from PortName Hu return ERR TTYSet c iflag amp INPCK Don t check input parity TTYSet c iflag Get rid of bit 8 TTYSet c iflag amp CRNL Don t convert CR to NL TTYSet c_cflag amp PARENB No parity TTYSet c cflag amp CSIZE TTYSet c cflag CS8 8 data bits TTYSet c_cflag amp CBAUD Clear old baud rate bits TTYSet c cflag 1200 Set baud to 1200 TTYSet c cflag CLOCAL TTYSet c cflag HUPCL TTYSet c lflag amp Don t want canonical input TTYSet c lflag amp ECHO No echo TTYSet c oflag amp 0 05 Don t post process output TTYSet c cc VMIN 1 MIN 1 char no buffering TTYSet c cc VTIME 0 Expect data after O ms if ioctl ModemFd TCSETA amp TTYSet ERR set new modem attributes openmodem c Oct 30 10 50 19
575. tne DmMC ard the S amp T Battalion FSB reaches its location and sends its message to the network to enter it into the appropriate routing tables and distribution lists S amp T Battalion uses the push a button method to send the FOL Location message to the DMMC Data has been entered manually through on line cata base update Lecatian sent is for the division main fuel distribution poirt 3 FSB uses screen template to format and send lecation otf FOL point lt v Data is also stored data base Location sent is far forward fuel distribution point in the brigece area 8 Messaces are received by DMMC DMMC posts data to its data base 6 DMMC uses clack metnod to formulate a consolidated list af and send to SFO anc FSB 7 SFO receives message from and posts it te its data base 8 SFO simulates forwarding of message ta MCS RDA and by displaying message on screen upon cemand operator Messape is displayed in JINTACCS format as one option and as human readable as a second option 9 FSB receives the message from DMMC and upon demand displays it upor the screen 10 FSB enters the POL location data in its data base 11 Change the auaritities of FOL an hand at the division main fuel distribution point in the S amp T Battalion cata bate using on line update 12 DMMC formulate on screen a request for update of FOL locations usin
576. to incorporate the new parameters Figure 4 11 depicts an example System Parameters file suggesting some typical values for the parameters listed An explanation of all system parameters and their functions is given in Table 4 1 below blocklen 1024 blocklen gcos 64 timeout 8 timeout gcos 30 preemption 1 archiving 0 forwarding 1 maxcalls 4 maxretransmit 5 downdelay 200 retrydelay 60 qmspoll 30 msgprocpoll 15 serverpoll 120 Figure 4 11 System Parameters file B9 TACCNET Technical Specification November 14 1986 archiving 1 or O 1 or discard 0 all messages after they have been processed on this system based upon this value blocklen 1 2000 140 When transmitting data to another UNIX based TACCNET system use packets containing this number of data bytes eT When transmitting to a Honeywell GCOS system bytes use packets containing this number of data bytes If a remote node is determined to be down sec do not to call it again for this many seconds Enable 1 or disable 0 alternate site re routing of messages to downed sites based upon this value maxcalls 1 100 If a site cannot be contacted do not try call more than this number of times before declaring the corresponding remote node to be down Do not try to read the modem s response to a tries hangup command more than this number of times maxretransmit 1 20 5 If a packet is transmi
577. tor request The communications protoco must support a mechanism for these cases in which a connection may be dropped cleanly and abruptly In the prototype TACCNET communications protocol a cancel control code is defined to indicate the need for immediate termination of a connection by either node When a node recognizes a priority preemption or operator cancel lation request as discussed in the Queue Management section above it may transmit this code as a control packet in place of the next control or data packet it would normally transmit This code will inform the remote sys tem that the connection is being prematurely terminated so that no failures will be assumed when the line is released Since the protocol is defined such that each node must respond to each packet transmitted by the other node cancellation can be recognized on the remote system at the instant the need arises Each of the systems can release its resources and resume operations as prescribed by its local environment The abrupt termination of a connection during transmission or reception will not be interpreted as an error in this case since an external entity will have evidently requested this action If a node suddenly loses a connection with a remote without receiving this cancel control packet however an error will be logged and the site will be considered to have gone down for an unexplained reason In the
578. ts jms h Oct 30 10 51 1986 Page file name ams h This file contains definitions and declarations globally used k constants and definitions for message entry system include lt stdio h gt include lt curses h gt include lt signal h gt define BS 0 8 define Ox7 define DEL Ox7f fdefine ESC Ox18 define EQUALS Istrcmp define MAXLINES 20 define MWLINES 18 Number of lines of main win fdefine Iprf dev lpr struct 1510 str char mtagl 16 MsgNo 5 char mtag2 7 mid 11 struct IstO str Prev Next struct Ist str schild ps struct 1511 str char settyp char 4 char SetiD 9 struct IstO_str parent struct 1511 str Prev Next union struct lsnode str Ischild struct csnode str cschild struct tsnode str tschild uval jms h Oct 30 10 51 1986 struct lIsnode str int char char char char char char char int int int int struct 1511 str fdno 1 811 fdesc 9 fval 251 jl21 notype 11 dtype 5 dmin dmax Xj parent Left right justification Combination of A N B and S Lower bound for the data value Upper bound for the data value screen position x coordinate screen position y
579. tted error try a to retransmit it this many times before declaring a transmission error _ _ ur sec between polls of msgprocq Allow 1 disallow 0 interruption of transmission between packets Interruption 1s always obeyed between transmission of complete messages qmspoll 0 32767 Have the gms program wait for this many seconds sec between polls of the system queues in continuous operation mode retrydelay 0 32767 If a remote node could not be reached but sec is not considered down do not try to call it again for this many seconds serverpoll 0 32767 sec Have the server program wait for this many seconds between polling of its queue for database timeout 5 32767 10 sec TACCNET node wait this many seconds before deciding that no response was made to a transmission timeout gcos 20 32767 During communications with a Honeywell GCOS sec system wait this many seconds before deciding that a response was not made to a transmission Table 4 1 Summary of TACCNET system parameters 2 70 TACCNET Technical Specification November 14 1986 4 3 5 User Interface To permit a single user to operate maintain and interact with the TACCNET system a general purpose user interface called console is provided This inter face is screen oriented and menu driven so it must be invoked from a video display terminal with cursor addre
580. tunable parameter o Control Packets Always 4 bytes Data packet format packecnumber STX 4 text DLE checksum Jem CR Control packet format control code DLE EM Message Processing MSQPFOoc o All messages pass through msgproc O Processing is based on message type o Routing is based on message header UNIX server Mail serverq msgprocq D sysa caller iocontrol qms Message Processing MSQProc o Message file name indicates type Format TsysnameXXXXX Where T message type sysname originating node XXXXX hex timestamp o Valid message types A Administrative P Priority message C Courtesy copy Routine message E Undeliverable _ S Invalid path H Bad header U User mail M New message N Rejected message Message Processing MSQProc o Routing based on message header priority c flag gt source path gt destination path o Path format site site site user Where site is a valid node ID user is either net adm server or a valid user on the node o Message may have multiple headers first is current Database Design Message Dictionary Hierarchical system may be preferred O JINTACCS message defined in hierarchical fashion Message database is primarily used as static message dictionary Information accessed hierarchically fields within sets within messages Speed of oper
581. type of each message to type F and places it in the Message Processor input queue msgproc msgproc then determines the new destination by reading the message header and looking up the destination site in the alternate site file A courtesy copy of the message is made and placed back in the original destination queue to be delivered when contact is reesta blished A new header containing the address of the chosen backup site is 44 TACCNET Technical Specification November 14 1986 added to the message and it is placed in the backup site s queue The courtesy copy message is type C and the forwarded message is now type R or P depending on its priority Courtesy copy messages are never forwarded In the event that the backup site is also down the process is repeated and the next backup site in the alternate site list will be tried This will continue until the message is successfully delivered or the backup sites are exhausted A courtesy copy will be created and enqueued for each down site 4 2 3 3 User Mail TACCNET may be used to send electronic mail to users at other TACCNET sites The address of a user is simply the name of the site followed by the userid of the recipient The two names must be separated by an exclamation point as in any other path specification For example to send a message to user frank at TACCNET node bravo the address would be bravo frank Received messages are place
582. u CurTier i Display menu item text else for j 0 j lt strlen Menu CurTier i j waddch Command toupper Menu CurTier Ci Lji else waddstr Command Menu CurTier i getyx Command y x Get current coords wmove Command 1 x l strlen Menu CurTier i1 2 printmenu c Oct 30 10 51 1986 Page 38 if i CurSel wStandEnd Command waddch Command v else wStandOut Command if i MenuSize CurTier 1 waddch Command char i int O 1 else waddch Command 0 wStandEnd Command Turn off highlight after selection wmove Command y x Restore old coordinates waddstr Command Space over after each item waddstr Command wrefresh Command Refresh command window wrefresh Command printtitle c Oct 30 10 51 1986 Page 39 include console h PrintTitle Display a window s title in its proper position void PrintTitle num int num Window number for title to be displayed int Middle if poem Middle Window num LeftSide Window num Width 2 strlen Window num Name 2 3 move Window num TopLine Middle StandOut 0 printw numtl addstr Name StandEnd refresh 0 queuesize c Oct 30 10 51 1986 include console h 5 QueueSize Return number of entries in a given directory queue int QueueSize
583. ug level 0 normal extern int errno ifdef XENIX FILE File for resetting 0 NDELAY under XENIX fendif main argc argv int argc char argv The Caller program will take a system name and a port name as input Parameters It will open the named port for dialout use and check for the presence of a modem It will get the connection information on the desired system and try to establish a connection with that system If that succeeds it will call IOControl to send the files located in the directory and receive any datafiles from the remote system Received file will be given to the Message Processor for disposition Errors will be logged and the program will terminate with either a good return code 0 or a bad return code 1 If a remote site is called unsuccessfully a record is kept in the site table When the number of unsuccessful attempts crosses a threshold value the site is declared down and all traffic for the site is rerouted for a period of time pathname IOControl int Status register int pid register int Condition register int Connected FALSE int 1 3 int quit signal SIGQUIT quit IntFlag FALSE Do not so run time initialization get the arguments and prepare for action if argc 3 if pups 4 amp amp argv 31 0 7 7 amp amp argv 3 1 7 7 argc Remove last argument sscanf argv 3 2 Zd amp DebugLevel Get debug l
584. ugLevel char com 2 sprintf com WriteLog Administer file MsgFileName command com switch c ActivateSite MsgFileFd break ChangeSite MsgFileFd break DeleteSite MsgFileFd break ExamineSite MsgFileFd break case ADD Result case CHANGE Result case DELETE Result case EXAMINE Result case RECOVER Result Recover MsgFi leFd break case SAVE Result Save MsgFileFd break case TRANSFER Result Transfer MsgFileFd break default WriteLog Administer bad command in MsgFileName Result ERR break fclose MsgFileFd return Result errors are handled by msgproc N 6 changesite c Oct 30 10 51 1986 Page 7 finclude int ChangeSite MsgFd FILE MsgFd FILE SiteTablefd FILE NewSi tesFd sitename Si teName sitename TargetName register int c if Lock SITETABLE GOOD i WriteLog ChangeSite can t lock SITETABLE return ERR if NewSitesFd fopen NEWSITETABLE NULL i WriteLog ChangeSite can t create NEWSITETABLE return ERR if SiteTableFd fopen SITETABLE r NULL i WriteLog ChangeSite can t open SITETABLE fclose NewSitesFd return ERR SkipEOL MsgFd skip to line containing site entry fscanf MsgFd 5 TargetName read in the name of the site copy current tabl
585. v 2 Read requested file argvtt argc NeedRead TRUE else if stremp argv 1 i 0 GoodTerminal 1 Some inverse video support not borders else if strcmp argv 1 1 0 GoodTerminal 0 Absolutely no inverse video support else if stremp argv 1 S 0 CurScreen SSTATUS else if stremp argv 1 n 0 AskUser FALSE Don t ask user to start system if down else if stremp argv 1 x 0 AutoConfig FALSE Don t load old config file unless asked else if stremp 1 s 0 if lt 3 argv 2 0 fprintf stderr Usage f file s sysname n SysName exit 1 AutoConfig FALSE strcpy CurSys argv 2 Set current system Window 0 Good TRUE startup c Oct 30 10 51 1986 Page Window 2 Good TRUE strcpy Window 0 Name argv 2 sprintf Window 2 Name log s log argv 2 argvtt argc argv argc Change to defined working directory TACCNET root structure if chdir CurrentDir fprintf stderr s cannot change directory to s n SysName CurrentDir exit 1 ThisName MyName 0 49 status c Oct 30 10 51 1986 include console h define MAXPHONENUMS 4 define define typedef sitename Si teName short Status short NumCalls long TimeToCall SysType filename Password pathname PhoneNum
586. ve message else if EQUALS NextSi te SERVER SERVERTYPE else Type USERTYPE user mail message else it is for an unknown site or user Type NOPATHTYPE WriteLog Process unknown site or user NextSite 1 else May be for second emulated system on local machine if SiteEntry gt SysType EMULATED sprintf Queue Xs Xs SiteEntry PhoneNum O MSGPROCQ build filename of correct type sprintf FileName c s Type MsgFiletl if DebugLevel WriteLog Process creating file FileNametl Queue copy message to that file in proper queue if MsgFileFd FileOpen FileName Queue w NULL WriteLog can t create FileName Queue process c Oct 30 10 52 1986 Page 35 fclose Fd return ERR copy the message header into new file fprintf MsgFileFd s n Priority if FixPath i move myname from start of Path to end of FullPath fprintf MsgFileFd c s n HEADERLINE NewPath fprintf MsgFileFd FullPath SEPCHAR FirstSite else i copy Path and FullPath verbatim fprintf MsgFileFd Path fprintf MsgFileFd s n FullPath copy the rest of the message while c getc Fd EOF putc MsgFileFd fclose MsgFileFd fclose Fd FileNQ FileName tl Queue make the file visible in the target queue i
587. ve the current message in permanent MESSAGES file wmove help win 8 3 wprintw help win View View the current message which is being created wprintw helpcom win Press ENTER key to back to COMMAND menu wmove 0 0 wprintw command_win COMMAND Create Help Movewin Print Quit Save View wmove command 1 0 wprintw command win Type Command Letter command handler jms c Oct 30 10 51 1986 Page clear refresh endwin end of main m FEN RP m FUND CEN PCS FEED QUAM uum r CERO SEND ER Command Handler ILEILINNEIBAEGNEIEGXEEEXIEXEXIEXSAGSEEZZzzzazzzzcmEEmI NEGI II ENIEZEXSIEZZIXSEZEzSXEXZEzEzEEEZZczcmme um command handler SWITCH 1 while SWITCH i touchwin command win wmove command win 1l 22 wrefresh command win commander wgetchar command win aan SS OE Oe ae So Se Se Se a ee SS Sn Se Actual Command Executioner Ct E E _ _ _ _ __ _ _ _j _ commander IC
588. ver sprintf NewName 55 55 SERVERQ NextMsgName sprintf OldName s s MSGPROCQ NextMsgName Result FRename OldName NewName break case REROUTETYPE Perform high level rerouting of the message Result ReRoute NextMsgName break case CCTYPE case ROUTINETYPE case PRIORTYPE case MESSAGETYPE Process normal messages Result Process NextMsgName break case USERTYPE mail message to local user Result MPMail NextMsgName break case NOPATHTYPE message destination not found by ValidSite Result Hold NextMsgName break case NOHEADTYPE message header was invalid Result ERR break case NAKTYPE message received with NAK x Result ERR break case ERRORTYPE message is mangled Result ERR breaks default does not match naming conventions WriteLog MsgProc unknown message type NextMsgName Result ERR break end of switch cases msgproc c Oct 30 10 51 1986 Page 30 switch Result case GOOD Archive NextMsgName MSGPROCQ Remove NextMsgName MSGPROCQ break case ERR default HandleError NextMsgName if Abort MasterQueue Check for need to abort ShutDown 0 got on to next message to be processed if Forever sleep between scans sleep PollDelay while Forever Continue scanning queue for more arrivals UnLock MS
589. ward message passing could be used to allow nodes which do not know how to contact each other directly to communicate through intermediate nodes A modified post office scheme can be used to handle messages for unknown destinations they are passed on to a designated node which may know how to deliver them or may pass them on to another designated node and so on This would allow nodes to restrict their database of network con tacts to those needed for routine operations 3 1 2 Priority Message Handling During the development of TACCNET we were unable to find information detailing the exact messages used within CSS and the frequencies of transmis sion of those messages We did encounter some documentation which indi cated that there would be response time criteria associated with some JIN TACCS messages The expected response times ranged from less than one minute to over a week This implies a need for different classes of service for messages with different response time requirements It is also reasonable to expect that there will be messages of different priorities flash immediate secret etc requiring different levels of service The question then arises what types of special services are required for these types of messages We may expect at least that there will be a requirement for immediate or fastest possible delivery and processing There may also be a need for immediate reply while the sending node remains
590. work with all flavors of C Some C s don t guarantee structure element alignment causing the expression amp struc elem to yield an incorrect value fscanf Fd Sd d amp 1 c 5 amp KStatus amp KNumCalls amp KTimeToCall amp KSysType TempBuf Site gt Status short KStatus Copy aligned data into structure Site gt NumCalls short KNumCalls Site gt TimeToCall KTimeToCall Site gt SysType KSysType strcpy Site gt Password TempBuf SkipEOL Fd phone numbers begin on next line c getc Fd read in the array of phone numbers while c NL amp amp c BLANK amp amp FIELDMARK amp amp c amp amp i lt MAXPHONENUMS ungetc c Fd fscanf Fd s TempBuf strepy Site gt PhoneNum i TempBuf Tti SkipEOL Fd go to next line c 7 getc Fd and get the first character Site gt PhoneNum 1 X0 mark end of list return Site receive c Oct 30 10 50 1986 Page 36 include net h include lt signal h gt include iocontrol h include jocontrol e extern int TimeOut Maximum delay before timeout should occur extern int HoneyTime Receive get a byte from the remote system via the modem waiting a maximum of TimeOut seconds for the byte If a character arrives return it to the caller If a byte is not received within the threshold return the error condition int Re
591. x strlen str 2 wprintw win s str if rvid wstandend wi n clear sceen and end if user presses DEL SIGINT int die jms c Oct 30 10 51 1986 clear refresh exit 1 Page 36 include jms h Global variables for these functions char DTYPE 5 Data Type as a mixture of A N B and S characters int DMIN DMAX HACK aT RIT I fede dese dese vede dee dede dfe dede Jedes dede de deese de eje e de dfe de ede edes deese KERR RIKER file name list c This file includes list handling routines dededesese sese de fede fefe dede de de KTR IK de fe de ese fede de fefe dfe dfe fe fefe de dfe fe de ee dede de e IT TT TET TT TET TIE TEI Part Routines to add nodes and lists Add message header into level O list Z252 n addOnode strl str3 char strl str3 listO nodeO nodeO listO malloc sizeof listO if head NULL head nodeQ nodeO Prev NULL nodeO Next NULL nodeO schild NULL strcpy nodeO mtagl str1 strcpy nodeO mtag2 str3 ptrOznodeO eise 0 ptrO nodeO Next NULL nodeO gt schild NULL ptrO gt Next nodeO strcpy nodeO mtagl str1 strcpy nodeO
592. xt receive file if Result EOT i mode SENDMODE else if Result INTERRUPTED Result ABORTED WriteLog lOControl RemoteName aborted WriteLog lOControl relinquishing line mode HANGUP Force a graceful hangup else if Result ERR WriteLog lOControl RemoteName FAILED Exit LOSTCONTACT else memory FALSE Forget about hanging up break default Illegal undefined mode WriteLog lOControl internal bad mode Exit INTERNALERROR Ungraceful exit to 0 S End of WHILE WriteLog l OControl conversation COMPLETE RemoteName if Preemption QueueName Give different return code if preempted Exit INTERRUPTED iocontrol c Oct 30 10 51 1986 Page 22 Exit 6000 Exit with normal completion code 0 int usage name char name fprintf stderr usage 5 sysname portname dn n name exit FATAL void ShutDown WriteLog ShutDown IQControl aborted by operator request Exit ABORTED iocontroldb c Oct 30 10 51 1986 Page 23 include sysdef h main ifdef ONYX v airmics bin iocontrol v airmics bin iocontrol dl1 0 felse exec usr taccnet bin iocontrol usr taccnet bin iocontrol 0 fendif iocontrolhdb c Oct 30 10 51 1986 21
593. xtracted from the database The Message Database supplies a structural definition to a message so that a user can create a message in the predefined JINTACCS format from the ter minal without knowing the specific details of the message format The user only needs to know the desired message type Furthermore the created mes sage in JINTACCS format can be translated into a more readable form by pro viding a data field identifier for each data item The Message Database which is used as a message dictionary was designed based on the definition of mes sages given in the ACCS COM Message Standards See ACCS A3 500 003 June 1984 for the standard format of Army Command and Control System ACCS character oriented messages The C Database contains information needed for command and control func tions It is also used to maintain all data objects in their most recent state while preserving the integrity of the database Information from the C database is transmitted to other units in JINTACCS format messages Information from incoming JINTA CCS messages is placed in the database Using these two databases the message system is capable of automatic message creation and automated database management 4 2 4 2 1 The Design of the Database The nature of the JINTACCS message format is in essence hierarchical The messages are composed of sets which in turn contain fields The fields are made up of data elements which may be composed
594. y on demand without operator intervention on the remote system All messages processed after the date of the backup would then be retransmitted upon receipt of a special broadcast message acl TACCNET G36 633 Final Technical Report April 28 1987 A TACCS computer was received by AIRMICS It was installed and brought up under a version of UNIX called DISTRIX 1 0 Plans were made to port TACCNET to the new system as soon as possible An advance copy of the Honeywell GCOS C Compiler arrived but was not accompanied by any documentation AIRMICS personne worked on getting manuals and on expediting our order 5 3 November 1985 Three work areas were identified TACCNET improvements Honeywell C conversion and database backup and recovery The conversion of Honeywell DPS 6 code from PASCAL to C were to begin as soon as the Honeywell DPS 6 C compiler was received and installed The other work was begun immediately The planned improvements to TACCNET included screen editing capability for JINTACCS messages console monitoring facilities for network observation message display utilities for demonstrations robust login procedures and administrative utilities These improvements are primarily of a cosmetic nature and will improve the clarity and impact of TACCNET demonstrations While the DASS described in the CSSCS environment was not required to receive JINTACCS messages from the TACCS at that time 1t was expected that that capability cou
595. ying access to the file A process cannot wait forever to lock a file Eventually based on the amount of unsuccessful retries the process must give up its attempt to access the file declaring an error This prevents deadlock and signals the system administra tor that an abnormal condition has occurred such as a process terminating without releasing its resources Some operating systems including certain UNIX implementations include sup port for system semaphores These are normally implemented in the system kernel and are accessed via system calls They can be used to guarantee exclusive access to protected resources such as modem ports the site table and the port table While the use of these features provides a more reliable and efficient protection mechanism than that described above it must be considered carefully as it is not likely to be portable across different operating systems or even different UNIX versions 3 3 1 3 Preemption The different components of the CSSCS act asynchronously although there is some level of communication among the components in certain specific cases Specifically the qms process must be able to send a message to a caller process requesting that a line be released immediately This sort of preemption requires a mechanism for communications between two independent processes Different operating systems support different levels of interprocess communica tion The UNIX operating system for example
596. yte byte un8igned char byte 1 unsigned char Tail 3 write ModemFd amp byte 1 See send c Tail 0 DLE Tail 1 EM Tail 2 CRET write ModemFd Tail 3 write ModemFd n 1 Forces Honeywell to flush output EOF PATH ZSYS72 gt UDD gt GOLDBERG gt UNIX gt SENDEN C TIME 1987 02 12 1714 22 5 finclude net h include iocontrol h finclude iocontrol e SendEnq send an enquire signal ENQ and await response with an acknowledge signal from master Time out after specified retry limit is exceeded int SendEng unsigned char Buffer Response buffer allocated by GetPacket int RetryCount 0 Counter for number of retries int Length Response buffer length not used FlushModemInput ModemFd Clear input buffer before sending ENQ while RetryCount lt MAXRETRY SendByte ENQ Transmit enquire signal if Buffer GetPacket amp Length NULL if DebugLevel WriteLog WaitEnq Timed out waiting for else if Buffer 0 ACK break Response was good systems are in sync else free Buffer release storage FlushModemInput ModemFd Get rid of possible extra characters if RetryCount gt MAXRETRY WriteLog SendEnq timed out awaiting contact with master exit LOSTCONTACT free Buffer release storage EOF PATH ZSYS72 gt UDD gt G
597. zeof csdatanode data nodes dptr csdatanode malloc j sizeof csdatanode tail ptr str 0 NULL 9 add c Oct 30 10 50 1986 Page 10 while LEQUALS loop till user enters end of set fptr ptrl uval cschild point to the head of field list loop through the field nodes gathering data till user says quit for k O k 66 fptr k fprintf stderr n enter 45 gt fptr gt fdname scanf E Nn c str 30 0 whi EQUALS b1_sup str amp amp EQUALS SCAT M amp amp FIRST s fprintf stderr Nn The set is fprintf stderr Reenter gt fptr gt fdname scanf S Nn c str ae FIRST FALSE if EQUALS 61 str 0 strcpy str if 0 amp amp EQUALS str break while k O amp amp EQUALS b1 sup str fprintf stderr Nn Reenter 5 gt fptr gt fdname scanf Nn c str str 30 0 node k csdatanode malloc sizeof csdatanode data space if fptr gt fchild NULL first field node in list fptr gt fchild node k node k prev NULL node k gt next NULL node k gt parent fptr strcpy node k gt csdata str pons node k else all following field nodes node k prev node k next NULL node k parent dptr k

Download Pdf Manuals

image

Related Search

Related Contents

ProForm 831.29604.1 Treadmill User Manual  CONTACTO SEMANAL 218 - TRABAJO CON  Tech air Z0708  (IN)SECURE Magazine  V7 Vantage Frontloader 17" Notebook Case  Nortel Networks LIP-6830 User's Manual  La transcription synchronisée des corpus oraux. Un aller-retour  Instruction manual Marine Diesel engine N3.21  Journal semestriel sept. 2014 – fév. 2015  Samsung VC-6025V Инструкция по использованию  

Copyright © All rights reserved.
Failed to retrieve file