Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Synchronet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Main
Synchronet
Commits
ce266335
Commit
ce266335
authored
21 years ago
by
rswindell
Browse files
Options
Downloads
Patches
Plain Diff
New Zmodem header based on zmtx/zmrx (no rzsz).
Added Zmodem context struct definition (zmodem_t).
parent
a8ad5c67
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/stp/zmodem.h
+243
-136
243 additions, 136 deletions
src/stp/zmodem.h
with
243 additions
and
136 deletions
src/stp/zmodem.h
+
243
−
136
View file @
ce266335
/*
* Z M O D E M . H Manifest constants for ZMODEM
* application to application file transfer protocol
* Copyright 1991 Omen Technology Inc All Rights Reserved
* 04-17-89 Chuck Forsberg Omen Technology Inc
* zmodem.h
* zmodem constants
* (C) Mattheij Computer Service 1994
*/
#define ZPAD '*'
/* 052 Padding character begins frames */
#define ZDLE 030
/* Ctrl-X Zmodem escape - `ala BISYNC DLE */
#define ZDLEE (ZDLE^0100)
/* Escaped ZDLE as transmitted */
#define ZBIN 'A'
/* Binary frame indicator (CRC-16) */
#define ZHEX 'B'
/* HEX frame indicator */
#define ZBIN32 'C'
/* Binary frame with 32 bit FCS */
#define ZBINR32 'D'
/* RLE packed Binary frame with 32 bit FCS */
#define ZVBIN 'a'
/* Binary frame indicator (CRC-16) */
#define ZVHEX 'b'
/* HEX frame indicator */
#define ZVBIN32 'c'
/* Binary frame with 32 bit FCS */
#define ZVBINR32 'd'
/* RLE packed Binary frame with 32 bit FCS */
#define ZRESC 0176
/* RLE flag/escape character */
#define ZMAXHLEN 16
/* Max header information length NEVER CHANGE */
#define ZMAXSPLEN 1024
/* Max subpacket length NEVER CHANGE */
/* Frame types (see array "frametypes" in zm.c) */
#define ZRQINIT 0
/* Request receive init */
#define ZRINIT 1
/* Receive init */
#define ZSINIT 2
/* Send init sequence (optional) */
#define ZACK 3
/* ACK to above */
#define ZFILE 4
/* File name from sender */
#define ZSKIP 5
/* To sender: skip this file */
#define ZNAK 6
/* Last packet was garbled */
#define ZABORT 7
/* Abort batch transfers */
#define ZFIN 8
/* Finish session */
#define ZRPOS 9
/* Resume data trans at this position */
#define ZDATA 10
/* Data packet(s) follow */
#define ZEOF 11
/* End of file */
#define ZFERR 12
/* Fatal Read or Write error Detected */
#define ZCRC 13
/* Request for file CRC and response */
#define ZCHALLENGE 14
/* Receiver's Challenge */
#define ZCOMPL 15
/* Request is complete */
#define ZCAN 16
/* Other end canned session with CAN*5 */
#define ZFREECNT 17
/* Request for free bytes on filesystem */
#define ZCOMMAND 18
/* Command from sending program */
#define ZSTDERR 19
/* Output to standard error, data follows */
/* ZDLE sequences */
#define ZCRCE 'h'
/* CRC next, frame ends, header packet follows */
#define ZCRCG 'i'
/* CRC next, frame continues nonstop */
#define ZCRCQ 'j'
/* CRC next, frame continues, ZACK expected */
#define ZCRCW 'k'
/* CRC next, ZACK expected, end of frame */
#define ZRUB0 'l'
/* Translate to rubout 0177 */
#define ZRUB1 'm'
/* Translate to rubout 0377 */
/* zdlread return values (internal) */
/* -1 is general error, -2 is timeout */
#define GOTOR 0400
#define GOTCRCE (ZCRCE|GOTOR)
/* ZDLE-ZCRCE received */
#define GOTCRCG (ZCRCG|GOTOR)
/* ZDLE-ZCRCG received */
#define GOTCRCQ (ZCRCQ|GOTOR)
/* ZDLE-ZCRCQ received */
#define GOTCRCW (ZCRCW|GOTOR)
/* ZDLE-ZCRCW received */
#define GOTCAN (GOTOR|030)
/* CAN*5 seen */
/* Byte positions within header array */
#define ZF0 3
/* First flags byte */
#define ZF1 2
#define ZF2 1
#define ZF3 0
#define ZP0 0
/* Low order 8 bits of position */
#define ZP1 1
#define ZP2 2
#define ZP3 3
/* High order 8 bits of file position */
/* Bit Masks for ZRINIT flags byte ZF0 */
#define CANFDX 01
/* Rx can send and receive true FDX */
#define CANOVIO 02
/* Rx can receive data during disk I/O */
#define CANBRK 04
/* Rx can send a break signal */
#define CANRLE 010
/* Receiver can decode RLE */
#define CANLZW 020
/* Receiver can uncompress */
#define CANFC32 040
/* Receiver can use 32 bit Frame Check */
#define ESCCTL 0100
/* Receiver expects ctl chars to be escaped */
#define ESC8 0200
/* Receiver expects 8th bit to be escaped */
/* Bit Masks for ZRINIT flags byte ZF1 */
#define CANVHDR 01
/* Variable headers OK */
/* Parameters for ZSINIT frame */
#define ZATTNLEN 32
/* Max length of attention string */
#define ALTCOFF ZF1
/* Offset to alternate canit string, 0 if not used */
/* Bit Masks for ZSINIT flags byte ZF0 */
#define TESCCTL 0100
/* Transmitter expects ctl chars to be escaped */
#define TESC8 0200
/* Transmitter expects 8th bit to be escaped */
/* Parameters for ZFILE frame */
/* Conversion options one of these in ZF0 */
#define ZCBIN 1
/* Binary transfer - inhibit conversion */
#define ZCNL 2
/* Convert NL to local end of line convention */
#define ZCRESUM 3
/* Resume interrupted file transfer */
/* Management include options, one of these ored in ZF1 */
#define ZMSKNOLOC 0200
/* Skip file if not present at rx */
/* Management options, one of these ored in ZF1 */
#define ZMMASK 037
/* Mask for the choices below */
#define ZMNEWL 1
/* Transfer if source newer or longer */
#define ZMCRC 2
/* Transfer if different file CRC or length */
#define ZMAPND 3
/* Append contents to existing file (if any) */
#define ZMCLOB 4
/* Replace existing file */
#define ZMNEW 5
/* Transfer if source newer */
/* Number 5 is alive ... */
#define ZMDIFF 6
/* Transfer if dates or lengths different */
#define ZMPROT 7
/* Protect destination file */
#define ZMCHNG 8
/* Change filename if destination exists */
/* Transport options, one of these in ZF2 */
#define ZTLZW 1
/* Lempel-Ziv compression */
#define ZTRLE 3
/* Run Length encoding */
/* Extended options for ZF3, bit encoded */
#define ZXSPARS 64
/* Encoding for sparse file operations */
#define ZCANVHDR 01
/* Variable headers OK */
/* Receiver window size override */
#define ZRWOVR 4
/* byte position for receive window override/256 */
/* Parameters for ZCOMMAND frame ZF0 (otherwise 0) */
#define ZCACK1 1
/* Acknowledge, then do command */
#ifndef STP
long
rclhdr
();
/* Globals used by ZMODEM functions */
extern
Rxframeind
;
/* ZBIN ZBIN32, or ZHEX type of frame */
extern
Rxtype
;
/* Type of header received */
extern
Rxcount
;
/* Count of data bytes received */
extern
Rxtimeout
;
/* Tenths of seconds to wait for something */
extern
long
Rxpos
;
/* Received file position */
extern
long
Txpos
;
/* Transmitted file position */
extern
Txfcs32
;
/* TURE means send binary frames with 32 bit FCS */
extern
Crc32t
;
/* Display flag indicating 32 bit CRC being sent */
extern
Crc32
;
/* Display flag indicating 32 bit CRC being received */
extern
Znulls
;
/* Number of nulls to send at beginning of ZDATA hdr */
extern
char
Attn
[
ZATTNLEN
+
1
];
/* Attention string rx sends to tx on err */
extern
char
*
Altcan
;
/* Alternate canit string */
#ifndef _ZMODEM_H
#define _ZMODEM_H
/*
* ascii constants
*/
#ifndef SOH
#define SOH 0x01
#define STX 0x02
#define EOT 0x04
#define ENQ 0x05
#define ACK 0x06
#if 0
#define LF 0x0a
#define CR 0x0d
#endif
#define XON 0x11
#define XOFF 0x13
#define NAK 0x15
#define CAN 0x18
#endif
/* End of ZMODEM.H */
/*
* zmodem constants
*/
#define ZMAXHLEN 0x10
/* maximum header information length */
#define ZMAXSPLEN 0x400
/* maximum subpacket length */
#define ZPAD 0x2a
/* pad character; begins frames */
#define ZDLE 0x18
/* ctrl-x zmodem escape */
#define ZDLEE 0x58
/* escaped ZDLE */
#define ZBIN 0x41
/* binary frame indicator (CRC16) */
#define ZHEX 0x42
/* hex frame indicator */
#define ZBIN32 0x43
/* binary frame indicator (CRC32) */
#define ZBINR32 0x44
/* run length encoded binary frame (CRC32) */
#define ZVBIN 0x61
/* binary frame indicator (CRC16) */
#define ZVHEX 0x62
/* hex frame indicator */
#define ZVBIN32 0x63
/* binary frame indicator (CRC32) */
#define ZVBINR32 0x64
/* run length encoded binary frame (CRC32) */
#define ZRESC 0x7e
/* run length encoding flag / escape character */
/*
* zmodem frame types
*/
#define ZRQINIT 0x00
/* request receive init (s->r) */
#define ZRINIT 0x01
/* receive init (r->s) */
#define ZSINIT 0x02
/* send init sequence (optional) (s->r) */
#define ZACK 0x03
/* ack to ZRQINIT ZRINIT or ZSINIT (s<->r) */
#define ZFILE 0x04
/* file name (s->r) */
#define ZSKIP 0x05
/* skip this file (r->s) */
#define ZNAK 0x06
/* last packet was corrupted (?) */
#define ZABORT 0x07
/* abort batch transfers (?) */
#define ZFIN 0x08
/* finish session (s<->r) */
#define ZRPOS 0x09
/* resume data transmission here (r->s) */
#define ZDATA 0x0a
/* data packet(s) follow (s->r) */
#define ZEOF 0x0b
/* end of file reached (s->r) */
#define ZFERR 0x0c
/* fatal read or write error detected (?) */
#define ZCRC 0x0d
/* request for file CRC and response (?) */
#define ZCHALLENGE 0x0e
/* security challenge (r->s) */
#define ZCOMPL 0x0f
/* request is complete (?) */
#define ZCAN 0x10
/* pseudo frame;
other end cancelled session with 5* CAN */
#define ZFREECNT 0x11
/* request free bytes on file system (s->r) */
#define ZCOMMAND 0x12
/* issue command (s->r) */
#define ZSTDERR 0x13
/* output data to stderr (??) */
/*
* ZDLE sequences
*/
#define ZCRCE 0x68
/* CRC next, frame ends, header packet follows */
#define ZCRCG 0x69
/* CRC next, frame continues nonstop */
#define ZCRCQ 0x6a
/* CRC next, frame continuous, ZACK expected */
#define ZCRCW 0x6b
/* CRC next, frame ends, ZACK expected */
#define ZRUB0 0x6c
/* translate to rubout 0x7f */
#define ZRUB1 0x6d
/* translate to rubout 0xff */
/*
* frame specific data.
* entries are prefixed with their location in the header array.
*/
/*
* Byte positions within header array
*/
#define FTYPE 0
/* frame type */
#define ZF0 4
/* First flags byte */
#define ZF1 3
#define ZF2 2
#define ZF3 1
#define ZP0 1
/* Low order 8 bits of position */
#define ZP1 2
#define ZP2 3
#define ZP3 4
/* High order 8 bits of file position */
/*
* ZRINIT frame
* zmodem receiver capability flags
*/
#define ZF0_CANFDX 0x01
/* Receiver can send and receive true full duplex */
#define ZF0_CANOVIO 0x02
/* receiver can receive data during disk I/O */
#define ZF0_CANBRK 0x04
/* receiver can send a break signal */
#define ZF0_CANCRY 0x08
/* Receiver can decrypt DONT USE */
#define ZF0_CANLZW 0x10
/* Receiver can uncompress DONT USE */
#define ZF0_CANFC32 0x20
/* Receiver can use 32 bit Frame Check */
#define ZF0_ESCCTL 0x40
/* Receiver expects ctl chars to be escaped */
#define ZF0_ESC8 0x80
/* Receiver expects 8th bit to be escaped */
#define ZF1_CANVHDR 0x01
/* Variable headers OK */
/*
* ZSINIT frame
* zmodem sender capability
*/
#define ZF0_TESCCTL 0x40
/* Transmitter expects ctl chars to be escaped */
#define ZF0_TESC8 0x80
/* Transmitter expects 8th bit to be escaped */
#define ZATTNLEN 0x20
/* Max length of attention string */
#define ALTCOFF ZF1
/* Offset to alternate canit string, 0 if not used */
/*
* ZFILE frame
*/
/*
* Conversion options one of these in ZF0
*/
#define ZF0_ZCBIN 1
/* Binary transfer - inhibit conversion */
#define ZF0_ZCNL 2
/* Convert NL to local end of line convention */
#define ZF0_ZCRESUM 3
/* Resume interrupted file transfer */
/*
* Management include options, one of these ored in ZF1
*/
#define ZF1_ZMSKNOLOC 0x80
/* Skip file if not present at rx */
#define ZF1_ZMMASK 0x1f
/* Mask for the choices below */
#define ZF1_ZMNEWL 1
/* Transfer if source newer or longer */
#define ZF1_ZMCRC 2
/* Transfer if different file CRC or length */
#define ZF1_ZMAPND 3
/* Append contents to existing file (if any) */
#define ZF1_ZMCLOB 4
/* Replace existing file */
#define ZF1_ZMNEW 5
/* Transfer if source newer */
#define ZF1_ZMDIFF 6
/* Transfer if dates or lengths different */
#define ZF1_ZMPROT 7
/* Protect destination file */
#define ZF1_ZMCHNG 8
/* Change filename if destination exists */
/*
* Transport options, one of these in ZF2
*/
#define ZF2_ZTNOR 0
/* no compression */
#define ZF2_ZTLZW 1
/* Lempel-Ziv compression */
#define ZF2_ZTRLE 3
/* Run Length encoding */
/*
* Extended options for ZF3, bit encoded
*/
#define ZF3_ZCANVHDR 0x01
/* Variable headers OK */
/* Receiver window size override */
#define ZF3_ZRWOVR 0x04
/* byte position for receive window override/256 */
#define ZF3_ZXSPARS 0x40
/* encoding for sparse file operations */
/*
* ZCOMMAND frame
*/
#define ZF0_ZCACK1 0x01
/* Acknowledge, then do command */
typedef
struct
{
SOCKET
sock
;
/* socket descriptor */
unsigned
char
rxd_header
[
ZMAXHLEN
];
/* last received header */
int
rxd_header_len
;
/* last received header size */
/*
* receiver capability flags
* extracted from the ZRINIT frame as received
*/
int
can_full_duplex
;
int
can_overlap_io
;
int
can_break
;
int
can_fcs_32
;
int
want_fcs_16
;
int
escape_all_control_characters
;
/* guess */
int
escape_8th_bit
;
int
use_variable_headers
;
/* use variable length headers */
/*
* file management options.
* only one should be on
*/
int
management_newer
;
int
management_clobber
;
int
management_protect
;
/* from zmtx.c */
#define MAX_SUBPACKETSIZE 1024
int
n_files_remaining
;
int
n_bytes_remaining
;
unsigned
char
tx_data_subpacket
[
MAX_SUBPACKETSIZE
];
long
current_file_size
;
time_t
transfer_start
;
int
receive_32_bit_data
;
int
raw_trace
;
int
use_crc16
;
long
ack_file_pos
;
/* file position used in acknowledgement of correctly */
/* received data subpackets */
int
last_sent
;
int
n_cans
;
long
mode
;
}
zmodem_t
;
#endif
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment