| /**************************************************************************** |
| ******* ******* |
| ******* P A C K E T H E A D E R F I L E |
| ******* ******* |
| **************************************************************************** |
| |
| Author : Ian Nandhra / Jeremy Rolls |
| Date : |
| |
| * |
| * (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| |
| Version : 0.01 |
| |
| |
| Mods |
| ---------------------------------------------------------------------------- |
| Date By Description |
| ---------------------------------------------------------------------------- |
| |
| ***************************************************************************/ |
| |
| #ifndef _pkt_h |
| #define _pkt_h 1 |
| |
| |
| #ifdef SCCS_LABELS |
| #ifndef lint |
| /* static char *_rio_pkt_h_sccs = "@(#)pkt.h 1.8"; */ |
| #endif |
| #endif |
| |
| #define MAX_TTL 0xf |
| #define PKT_CMD_BIT ((ushort) 0x080) |
| #define PKT_CMD_DATA ((ushort) 0x080) |
| |
| #define PKT_ACK ((ushort) 0x040) |
| |
| #define PKT_TGL ((ushort) 0x020) |
| |
| #define PKT_LEN_MASK ((ushort) 0x07f) |
| |
| #define DATA_WNDW ((ushort) 0x10) |
| #define PKT_TTL_MASK ((ushort) 0x0f) |
| |
| #define PKT_MAX_DATA_LEN 72 |
| |
| #define PKT_LENGTH sizeof(struct PKT) |
| #define SYNC_PKT_LENGTH (PKT_LENGTH + 4) |
| |
| #define CONTROL_PKT_LEN_MASK PKT_LEN_MASK |
| #define CONTROL_PKT_CMD_BIT PKT_CMD_BIT |
| #define CONTROL_PKT_ACK (PKT_ACK << 8) |
| #define CONTROL_PKT_TGL (PKT_TGL << 8) |
| #define CONTROL_PKT_TTL_MASK (PKT_TTL_MASK << 8) |
| #define CONTROL_DATA_WNDW (DATA_WNDW << 8) |
| |
| struct PKT { |
| #ifdef INKERNEL |
| BYTE dest_unit; /* Destination Unit Id */ |
| BYTE dest_port; /* Destination POrt */ |
| BYTE src_unit; /* Source Unit Id */ |
| BYTE src_port; /* Source POrt */ |
| #else |
| union { |
| ushort destination; /* Complete destination */ |
| struct { |
| unsigned char unit; /* Destination unit */ |
| unsigned char port; /* Destination port */ |
| } s1; |
| } u1; |
| union { |
| ushort source; /* Complete source */ |
| struct { |
| unsigned char unit; /* Source unit */ |
| unsigned char port; /* Source port */ |
| } s2; |
| } u2; |
| #endif |
| #ifdef INKERNEL |
| BYTE len; |
| BYTE control; |
| #else |
| union { |
| ushort control; |
| struct { |
| unsigned char len; |
| unsigned char control; |
| } s3; |
| } u3; |
| #endif |
| BYTE data[PKT_MAX_DATA_LEN]; |
| /* Actual data :-) */ |
| WORD csum; /* C-SUM */ |
| }; |
| #endif |
| |
| /*********** end of file ***********/ |