freebsd-nq/usr.sbin/atm/scspd/scsp_if.h
Poul-Henning Kamp 1820df7a2d Add new files for HARP3
Host ATM Research Platform (HARP), Network Computing Services, Inc.
This software was developed with the support of the Defense Advanced
Research Projects Agency (DARPA).
1998-09-15 08:23:17 +00:00

195 lines
4.8 KiB
C

/*
*
* ===================================
* HARP | Host ATM Research Platform
* ===================================
*
*
* This Host ATM Research Platform ("HARP") file (the "Software") is
* made available by Network Computing Services, Inc. ("NetworkCS")
* "AS IS". NetworkCS does not provide maintenance, improvements or
* support of any kind.
*
* NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
* INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
* SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
* In no event shall NetworkCS be responsible for any damages, including
* but not limited to consequential damages, arising from or relating to
* any use of the Software or related support.
*
* Copyright 1994-1998 Network Computing Services, Inc.
*
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
* @(#) $Id: scsp_if.h,v 1.2 1998/07/16 15:59:33 johnc Exp $
*
*/
/*
* Server Cache Synchronization Protocol (SCSP) Support
* ----------------------------------------------------
*
* Interface to server clients of SCSP
*
*/
#ifndef _SCSP_SCSP_IF_H
#define _SCSP_SCSP_IF_H
/*
* SCSP configuration message
*/
struct scsp_cfg_msg {
char atmarp_netif[IFNAMSIZ];
};
typedef struct scsp_cfg_msg Scsp_cfg_msg;
/*
* SCSP cache summary
*/
struct scsp_sum_msg {
u_short ss_hops; /* Hop count */
u_char ss_null; /* Null flag */
long ss_seq; /* CSA seq. no. */
Scsp_ckey ss_key; /* Cache key */
Scsp_id ss_oid; /* Originator ID */
};
typedef struct scsp_sum_msg Scsp_sum_msg;
/*
* SCSP constants for ATMARP
*/
#define SCSP_ATMARP_PROTO 1
#define SCSP_ATMARP_SIDL 4
#define SCSP_ATMARP_RIDL 4
#define SCSP_ATMARP_CKL 4
#define SCSP_ATMARP_OIDL 4
/*
* SCSP ATMARP message
*/
struct scsp_atmarp_msg {
u_char sa_state; /* Cache entry state (below) */
struct in_addr sa_cpa; /* Cached protocol address */
Atm_addr sa_cha; /* Cached ATM address */
Atm_addr sa_csa; /* Cached ATM subaddress */
Scsp_ckey sa_key; /* Cache key for entry */
Scsp_id sa_oid; /* Originator ID */
long sa_seq; /* Sequence no. */
};
typedef struct scsp_atmarp_msg Scsp_atmarp_msg;
#define SCSP_ASTATE_NEW 0 /* ATMARP new server registration */
#define SCSP_ASTATE_UPD 1 /* ATMARP server refreshed */
#define SCSP_ASTATE_DEL 2 /* ATMARP server data deleted */
/*
* SCSP constants for NHRP
*/
#define SCSP_NHRP_PROTO 2
#define SCSP_NHRP_SIDL 4
#define SCSP_NHRP_RIDL 4
#define SCSP_NHRP_CKL 4
#define SCSP_NHRP_OIDL 4
/*
* SCSP NHRP message
*/
struct scsp_nhrp_msg {
u_short sn_af; /* Address family */
u_short sn_proto; /* NHRP protocol type */
u_char sn_snap[5]; /* SNAP */
u_char sn_ver; /* NHRP version number */
u_short sn_flags; /* Flags */
u_long sn_rid; /* Request ID */
u_char sn_state; /* State */
u_char sn_prel; /* Prefix length */
u_short sn_mtu; /* Maximum transmission unit */
u_short sn_hold; /* Holding time */
Atm_addr sn_addr; /* Server network address */
Atm_addr sn_saddr; /* Server network subaddress */
struct in_addr sn_paddr; /* Server protocol address */
Scsp_ckey sn_key; /* Cache key for entry */
Scsp_id sn_oid; /* Originator ID */
};
typedef struct scsp_nhrp_msg Scsp_nhrp_msg;
#define SCSP_NSTATE_NEW 0 /* New NHRP server */
#define SCSP_NSTATE_UPD 1 /* NHRP server re-registered */
#define SCSP_NSTATE_DEL 2 /* NHRP server data purged */
#define SCSP_NSTATE_NSD 3 /* NHRP no such data in server */
/*
* SCSP/server message header
*/
struct scsp_if_msg_hdr {
u_char sh_type; /* Message type */
u_char sh_rc; /* Response code */
u_short sh_proto; /* SCSP protocol ID */
int sh_len; /* Length of message */
u_long sh_tok; /* Token from SCSP daemon */
};
typedef struct scsp_if_msg_hdr Scsp_if_msg_hdr;
/*
* SCSP-server message
*/
struct scsp_if_msg {
Scsp_if_msg_hdr si_hdr; /* Header fields */
union {
Scsp_cfg_msg siu_cfg; /* Config data */
Scsp_sum_msg siu_sum; /* Cache summary */
Scsp_atmarp_msg siu_atmarp; /* ATMARP update */
Scsp_nhrp_msg siu_nhrp; /* NHRP update */
} si_u;
};
typedef struct scsp_if_msg Scsp_if_msg;
#define si_type si_hdr.sh_type
#define si_rc si_hdr.sh_rc
#define si_proto si_hdr.sh_proto
#define si_len si_hdr.sh_len
#define si_tok si_hdr.sh_tok
#define si_cfg si_u.siu_cfg
#define si_sum si_u.siu_sum
#define si_atmarp si_u.siu_atmarp
#define si_nhrp si_u.siu_nhrp
/*
* Message types
*/
#define SCSP_NOP_REQ 1
#define SCSP_CFG_REQ 2
#define SCSP_CFG_RSP 3
#define SCSP_CACHE_IND 4
#define SCSP_CACHE_RSP 5
#define SCSP_SOLICIT_IND 6
#define SCSP_SOLICIT_RSP 7
#define SCSP_UPDATE_IND 8
#define SCSP_UPDATE_REQ 9
#define SCSP_UPDATE_RSP 10
/*
* Response codes
*/
#define SCSP_RSP_OK 0
#define SCSP_RSP_ERR 1
#define SCSP_RSP_REJ 2
#define SCSP_RSP_NOT_FOUND 3
#endif /* _SCSP_SCSP_IF_H */