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/sigtran/m2ua_msgs.h


File /code/strss7/drivers/sigtran/m2ua_msgs.h



#ifndef __M2UA_MSGS_H__
#define __M2UA_MSGS_H__

#ident "@(#) $RCSfile: m2ua_msgs.h,v $ $Name:  $($Revision: 0.8.2.1 $) $Date: 2002/04/19 18:37:15 $"

#include "ua_msgs.h"
/*
 *  =========================================================================
 *
 *  M2UA MESSAGE DEFINITIONS:-
 *
 *  =========================================================================
 *
 *  M2UA-Specific Messages: per draft-ietf-sigtran-m2ua-10.txt
 *  -------------------------------------------------------------------
 */
#define M2UA_MAUP_DATA		UA_MHDR(1, 0, UA_CLASS_MAUP, 0x01)
#define M2UA_MAUP_ESTAB_REQ	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x02)
#define M2UA_MAUP_ESTAB_CON	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x03)
#define M2UA_MAUP_REL_REQ	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x04)
#define M2UA_MAUP_REL_CON	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x05)
#define M2UA_MAUP_REL_IND	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x06)
#define M2UA_MAUP_STATE_REQ	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x07)
#define M2UA_MAUP_STATE_CON	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x08)
#define M2UA_MAUP_STATE_IND	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x09)
#define M2UA_MAUP_RETR_REQ	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x0a)
#define M2UA_MAUP_RETR_CON	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x0b)
#define M2UA_MAUP_RETR_IND	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x0c)
#define M2UA_MAUP_RETR_COMP_IND	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x0d)
#define M2UA_MAUP_CONG_IND	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x0e)
#define M2UA_MAUP_DATA_ACK	UA_MHDR(1, 0, UA_CLASS_MAUP, 0x0f)
#define M2UA_MAUP_LAST		0x0f
/*
 *  M2UA-Specific Parameters: per draft-ietf-sigtran-m2ua-10.txt
 *  -------------------------------------------------------------------
 */
#define M2UA_PARM_DATA1		UA_PHDR(0x0300,0)
#define M2UA_PARM_DATA2		UA_PHDR(0x0301,0)
#define M2UA_PARM_STATE_REQUEST	UA_PHDR(0x0302,sizeof(uint32_t))
#define M2UA_PARM_STATE_EVENT	UA_PHDR(0x0303,sizeof(uint32_t))
#define M2UA_PARM_CONG_STATUS	UA_PHDR(0x0304,sizeof(uint32_t))
#define M2UA_PARM_DISC_STATUS	UA_PHDR(0x0305,sizeof(uint32_t))
#define M2UA_PARM_ACTION	UA_PHDR(0x0306,sizeof(uint32_t))
#define M2UA_PARM_SEQNO		UA_PHDR(0x0307,sizeof(uint32_t))
#define M2UA_PARM_RETR_RESULT	UA_PHDR(0x0308,sizeof(uint32_t))
#define M2UA_PARM_LINK_KEY	UA_PHDR(0x0309,sizeof(uint32_t)*6)
#define M2UA_PARM_LOC_KEY_ID	UA_PHDR(0x030a,sizeof(uint32_t))
#define M2UA_PARM_SDTI		UA_PHDR(0x030b,sizeof(uint32_t))
#define M2UA_PARM_SDLI		UA_PHDR(0x030c,sizeof(uint32_t))
#define M2UA_PARM_REG_RESULT	UA_PHDR(0x030d,sizeof(uint32_t))
#define M2UA_PARM_REG_STATUS	UA_PHDR(0x030e,sizeof(uint32_t))
#define M2UA_PARM_DEREG_RESULT	UA_PHDR(0x030f,sizeof(uint32_t)*4)
#define M2UA_PARM_DEREG_STATUS	UA_PHDR(0x0310,sizeof(uint32_t))
#define M2UA_PARM_CORR_ID	UA_PHDR(0x0311,sizeof(uint32_t))
#define M2UA_PARM_CORR_ID_ACK	UA_PHDR(0x0312,sizeof(uint32_t))

#define M2UA_ACTION_RTRV_BSN		(0x01)
#define M2UA_ACTION_RTRV_MSGS		(0x02)

#define M2UA_RESULT_SUCCESS		(0x00)
#define M2UA_RESULT_FAILURE		(0x01)

#define M2UA_STATUS_LPO_SET		(0x00)
#define M2UA_STATUS_LPO_CLEAR		(0x01)
#define M2UA_STATUS_EMER_SET		(0x02)
#define M2UA_STATUS_EMER_CLEAR		(0x03)
#define M2UA_STATUS_FLUSH_BUFFERS	(0x04)
#define M2UA_STATUS_CONTINUE		(0x05)
#define M2UA_STATUS_CLEAR_RTB		(0x06)
#define M2UA_STATUS_AUDIT		(0x07)
#define M2UA_STATUS_CONG_CLEAR		(0x08)
#define M2UA_STATUS_CONG_ACCEPT		(0x09)
#define M2UA_STATUS_CONG_DISCARD	(0x0a)

#define M2UA_EVENT_RPO_ENTER		(0x01)
#define M2UA_EVENT_RPO_EXIT		(0x02)
#define M2UA_EVENT_LPO_ENTER		(0x03)
#define M2UA_EVENT_LPO_EXIT		(0x04)

#define M2UA_LEVEL_NONE			(0x00)
#define M2UA_LEVEL_1			(0x01)
#define M2UA_LEVEL_2			(0x02)
#define M2UA_LEVEL_3			(0x03)

#define M2UA_PARM_BASE 0x0300
typedef struct m2ua_parms {
	uint mtag;
	uint mlen;
	ua_parms_t common;
	parm_t data1;
	parm_t data2;
	parm_t state_request;
	parm_t state_event;
	parm_t cong_status;
	parm_t disc_status;
	parm_t action;
	parm_t seqno;
	parm_t retr_result;
	parm_t link_key;
	parm_t loc_key_id;
	parm_t sdti;
	parm_t sdli;
	parm_t reg_result;
	parm_t reg_status;
	parm_t dereg_result;
	parm_t dereg_status;
	parm_t corr_id;
	parm_t corr_id_ack;
#define M2UA_PARM_MAX 18
} m2ua_parms_t;

static inline int m2ua_decode_parms(mblk_t * mp, m2ua_parms_t * m2ua_results)
{
	int len;
	uint32_t *p = (uint32_t *) mp->b_rptr;
	struct parm *pp = NULL;
	bzero(m2ua_results, sizeof(*m2ua_results));
	m2ua_results->mtag = UA_MSG_MTAG(*p++);
	m2ua_results->mlen = ntohl(*p++);
	for (;; p += UA_WORDS(len)) {
		int ttag, tag;
		if (p == (uint32_t *) mp->b_wptr)
			return (0);	/* done */
		if (p > ((uint32_t *) mp->b_wptr) - 1 || (len = UA_LENGTH(*p)) < 4)
			return (-EMSGSIZE);
		tag = UA_TAG(*p);
		ttag = tag - UA_PARM_BASE;
		if (0 <= ttag && ttag <= UA_PARM_MAX) {
			pp = ((struct ua_parm *) &m2ua_results->common) + ttag;
			pp->u.wptr = p + 1;
			pp->len = len;
			pp->val = ntohl(p[1]);
			continue;
		}
		ttag = tag - M2UA_PARM_BASE;
		if (0 <= ttag && ttag <= M2UA_PARM_MAX) {
			pp = ((struct ua_parm *) &m2ua_results->data1) + ttag;
			pp->u.wptr = p + 1;
			pp->len = len;
			pp->val = ntohl(p[1]);
			continue;
		}
		ptrace(("Unrecognized parameter\n"));
		continue;
	}
	return (0);
}

static inline mblk_t *m2ua_convert(mblk_t * dp, int *err)
{
	mblk_t *mp;
	m2ua_parms_t *p;
	if ((mp = allocb(sizeof(*p), BPRI_MED))) {
		mp->b_datap->db_type = M_DATA;
		p = ((typeof(p)) mp->b_wptr)++;
		if ((*err = m2ua_decode_parm(dp, p))) {
			freemsg(mp);
			return NULL;
		}
		mp->b_cont = dp;
		return (mp);
	}
	*err = -ENOBUFS;
	return NULL;
}

#endif				/* __M2UA_MSGS_H__ */


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

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

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