OpenSS7 SS7 for the Common Man |
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
||||||||||||||||||||||||||
Home | Overview | Status | News | Documentation | Resources | About | |||||||||||||||||||||
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__ */
|
|||||||||||||||||||||||||||
OpenSS7 SS7 for the Common Man |
Home | Overview | Status | News | Documentation | Resources | About | ||||||||||||||||||||
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |