OpenSS7
SS7 for the
Common Man

© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved.
Last modified:

Home Overview Status News Documentation Resources About
   
 Overview
 Status
 News
 Documentation
 Resources
 About

   
Home Index Prev Next More Download Info FAQ Mail   Home -> Resources -> Browse Source -> strss7/drivers/sua/sua_sccp.h


File /code/strss7/drivers/sua/sua_sccp.h



#ifndef __SUA_SCCP_H__
#define __SUA_SCCP_H__

/*
 *  =========================================================================
 *
 *  SUA --> SCCP Provider (Downstream Primitives to SCCP Provider)
 *
 *  =========================================================================
 *
 *  These are basic inlines for formulating NPI downstream primitives.  They
 *  are completely general and are called by the message translators.
 */
/*
 *  N_CONN_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_conn_req(flags, dst_ptr, dst_len, qos_ptr, qos_len)
	uint flags;
	caddr_t dst_ptr;
	size_t dst_len;
	caddr_t qos_ptr;
	size_t qos_len;
{
	mblk_t *mp;
	N_conn_req_t *p;
	if ((mp = allocb(sizeof(*p) + dst_len + qos_len, BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_conn_req_t *) mp->b_wptr;
		p->primitive = N_CONN_REQ;
		p->DEST_length = dst_len;
		p->DEST_offset = dst_len ? sizeof(*p) : 0;
		p->CONN_flags = flags;
		p->QOS_length = qos_len;
		p->QOS_offset = qos_len ? sizeof(*p) + dst_len : 0;
		mp->b_wptr += sizeof(*p);
		bcopy(dst_ptr, mp->b_wptr, dst_len);
		mp->b_wptr += dst_len;
		bcopy(qos_ptr, mp->b_wptr, qos_len);
		mp->b_wptr += qos_len;
	}
	return (mp);
}

/*
 *  N_CONN_RES
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_conn_res(tok, seq, flags, res_ptr, res_len, qos_ptr, qos_len)
	uint tok;
	uint seq;
	uint flags;
	caddr_t res_ptr;
	size_t res_len;
	caddr_t qos_ptr;
	size_t qos_len;
{
	mblk_t *mp;
	N_conn_res_t *p;
	if ((mp = allocb(sizeof(*p) + res_len + qos_len, BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_conn_res_t *) mp->b_wptr;
		p->primitive = N_CONN_RES;
		p->TOKEN_value = tok;
		p->RES_length = res_len;
		p->RES_offset = resl_len ? sizeof(*p) : 0;
		p->SEQ_number = seq;
		p->CONN_flags = flags;
		p->QOS_length = qos_len;
		p->QOS_offset = qos_len ? sizeof(*p) + res_len : 0;
		mp->b_wptr += sizeof(*p);
		bcopy(res_ptr, mp->b_wptr, res_len);
		mp->b_wptr += res_len;
		bcopy(qos_ptr, mp->b_wptr, qos_len);
		mp->b_wptr += qos_len;
	}
	return (mp);
}

/*
 *  N_DISCON_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_discon_req(reason, seq, res_ptr, res_len)
	uint reason;
	uint seq;
	caddr_t res_ptr;
	size_t res_len;
{
	mblk_t *mp;
	N_discon_req_t *p;
	if ((mp = allocb(sizeof(*p) + res_len, BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_discon_req_t *) mp->b_wptr;
		p->primitive = N_DISCON_REQ;
		p->DISCON_reason = reason;
		p->RES_length = res_len;
		p->RES_offset = res_len ? sizeof(*p) : 0;
		p->SEQ_number = seq;
		mp->b_wptr += sizeof(*p);
		bcopy(res_ptr, mp->b_wptr, res_len);
		mp->b_wptr += res_len;
	}
	return (mp);
}

/*
 *  N_DATA_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_data_req(uint flags, mblk_t * db)
{
	mblk_t *mp;
	N_data_req_t *p;
	if ((mp = allocb(sizeof(*p), BPRI_MED))) {
		mp->b_datap->db_type = M_PROTO;
		p = (N_data_req_t *) mp->b_wptr;
		p->primitive = N_DATA_REQ;
		p->DATA_xfer_flags = flags;
		mp->b_wptr += sizeof(*p);
		mp->b_cont = db;
	}
	return (mp);
}

/*
 *  N_EXDATA_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_exdata_req(mblk_t * db)
{
	mblk_t *mp;
	N_exdata_req_t *p;
	if ((mp = allocb(sizeof(*p), BPRI_MED))) {
		mp->b_datap->db_type = M_PROTO;
		p = (N_exdata_req_t *) mp->b_wptr;
		p->primitive = N_EXDATA_REQ;
		mp->b_wptr += sizeof(*p);
		mp->b_cont = db;
	}
	return (mp);
}

/*
 *  N_INFO_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_info_req(void)
{
	mblk_t *mp;
	N_info_req_t *p;
	if ((mp = allocb(sizeof(*p), BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_info_req_t *) mp->b_wptr;
		p->primitive = N_INFO_REQ;
		mp->b_wptr += sizeof(*p);
	}
	return (mp);
}

/*
 *  N_BIND_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_bind_req(flags, conind, add_ptr, add_len, pro_ptr, pro_len)
	uint flags;
	uint conind;
	caddr_t addr_ptr;
	size_t add_len;
	caddr_t pro_ptr;
	size_t pro_len;
{
	mblk_t *mp;
	N_bind_req_t *p;
	if ((mp = allocb(sizeof(*p) + add_len + pro_len, BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_bind_req_t *) mp->b_wptr;
		p->primitive = N_BIND_REQ;
		p->ADDR_length = add_len;
		p->ADDR_offset = add_len ? sizeof(*p) : 0;
		p->CONIND_number = conind;
		p->BIND_flags = flags;
		p->PROTOID_length = pro_len;
		p->PROTOID_offset = pro_len ? sizeof(*p) + add_len : 0;
		mp->b_wptr += sizeof(*p);
		bcopy(add_ptr, mp->b_wptr, add_len);
		mp->b_wptr += add_len;
		bcopy(pro_ptr, mp->b_wptr, pro_len);
		mp->b_wptr += pro_len;
	}
	return (mp);
}

/*
 *  N_UNBIND_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_unbind_req(void)
{
	mblk_t *mp;
	N_unbind_req_t *p;
	if ((mp = allocb(sizeof(*p), BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_unbind_req_t *) mp->b_wptr;
		p->primitive = N_UNBIND_REQ;
		mp->b_wptr += sizeof(*p);
	}
	return (mp);
}

/*
 *  N_UNITDATA_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_unitdata_req(dst_ptr, dst_len, db)
	caddr_t dst_ptr;
	size_t dst_len;
	mblk_t *db;
{
	mblk_t *mp;
	N_unitdata_req_t *p;
	if ((mp = allocb(sizeof(*p) + dst_len, BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_unitdata_req_t *) mp->b_wptr;
		p->primitive = N_UNITDATA_REQ;
		p->DEST_length = dst_len;
		p->DEST_offset = dst_len ? sizeof(*p) : 0;
		p->RESERVED_field[0] = 0;
		p->RESERVED_field[1] = 0;
		mp->b_wptr += sizeof(*p);
		bcopy(dst_ptr, mp->b_wptr, dst_len);
		mp->b_wptr += dst_len;
		mp->b_cont = db;
	}
	return (mp);
}

/*
 *  N_OPTMGMT_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_optmgmt_req(flags, qos_ptr, qos_len)
	uint flags;
	caddr_t qos_ptr;
	size_t qos_len;
{
	mblk_t *mp;
	N_optmgmt_req_t *p;
	if ((mp = allocb(sizeof(*p) + qos_len, BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_optmgmt_req_t *) mp->b_wptr;
		p->primitive = N_OPTMGMT_REQ;
		p->QOS_length = qos_len;
		p->QOS_offset = qos_len ? sizeof(*p) : 0;
		p->OPTMGMT_flags = flags;
		mp->b_wptr += sizeof(*p);
		bcopy(qos_ptr, mp->b_wptr, qos_len);
		mp->b_wptr += qos_len;
	}
	return (mp);
}

/*
 *  N_DATACK_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_datack_req(void)
{
	mblk_t *mp;
	N_datack_req_t *p;
	if ((mp = allocb(sizeof(*p), BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_datack_req_t *) mp->b_wptr;
		p->primitive = N_DATACK_REQ;
		mp->b_wptr += sizeof(*p);
	}
	return (mp);
}

/*
 *  N_RESET_REQ
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_reset_req(uint reason)
{
	mblk_t *mp;
	N_reset_req_t *p;
	if ((mp = allocb(sizeof(*p), BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_reset_req_t *) mp->b_wptr;
		p->primitive = N_RESET_REQ;
		p->RESET_reason = reason;
		mp->b_wptr += sizeof(*p);
	}
	return (mp);
}

/*
 *  N_RESET_RES
 *  -------------------------------------------------------------------------
 */
static __inline__ mblk_t *n_reset_res(void)
{
	mblk_t *mp;
	N_reset_res_t *p;
	if ((mp = allocb(sizeof(*p), BPRI_MED))) {
		mp->b_datap->db_type = M_PCPROTO;
		p = (N_reset_res_t *) mp->b_wptr;
		p->primitive = N_RESET_RES;
		mp->b_wptr += sizeof(*p);
	}
	return (mp);
}

#endif				/* __SUA_SCCP_H__ */


Home Index Prev Next More Download Info FAQ Mail   Home -> Resources -> Browse Source -> strss7/drivers/sua/sua_sccp.h

OpenSS7
SS7 for the
Common Man
Home Overview Status News Documentation Resources About

© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved.
Last modified: