OpenSS7 SS7 for the Common Man |
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
||||||||||||||||||||||||||
Home | Overview | Status | News | Documentation | Resources | About | |||||||||||||||||||||
File /code/strss7/include/ss7/sctp.h#ifndef __SS7_SCTP_H__ #define __SS7_SCTP_H__ #ident "@(#) $Name: $($Revision: 0.8.2.2 $) Copyright (c) 1997-2002 OpenSS7 Corporation." #ifdef __KERNEL__ #include "../../include/npi.h" #else #include <sys/npi.h> #endif /* * These are SCTP specific definitions for NPI... */ /* * QOS structure types for SCTP */ #define N_QOS_SEL_SCTP 0x0201 #define N_QOS_OPT_SEL_SCTP 0x0202 #define N_QOS_RANGE_SCTP 0x0203 #define N_QOS_STR_SEL_SCTP 0x0204 typedef struct { np_ulong n_qos_type; /* always N_QOS_SEL_SCTP */ /* * FIXME: more... */ } N_qos_sel_sctp_t; typedef struct { np_ulong n_qos_type; /* always N_QOS_OPT_SEL_SCTP */ /* * FIXME: more... */ } N_qos_opt_sel_sctp_t; typedef struct { np_ulong n_qos_type; /* always N_QOS_RANGE_SCTP */ /* * FIXME: more... */ } N_qos_range_sctp_t; typedef struct { np_ulong n_qos_type; /* always N_QOS_STR_SEL_SCTP */ long ppi; /* payload protocol identifier */ long sid; /* stream id */ long ssn; /* strean sequence number */ long tsn; /* transmit sequence number */ } N_qos_str_sel_sctp_t; #define N_QOS_PPI_IUA #define N_QOS_PPI_M2UA #define N_QOS_PPI_M3UA #define N_QOS_PPI_SUA #define N_QOS_PPI_TUA /* * NC data transfer request with options. */ #define N_data_req_t SCTP_data_req_t typedef struct { np_ulong PRIM_type; /* always N_DATA_REQ */ np_ulong DATA_xfer_flags; /* data transfer flags */ np_ulong QOS_length; /* QOS parameter set length */ np_ulong QOS_offset; /* QOS parameter set offset */ } SCTP_data_req_t; /* * NC expedited data request with options */ #define N_exdata_req_t SCTP_exdata_req_t typedef struct { np_ulong PRIM_type; /* always N_EXDATA_REQ */ np_ulong QOS_length; /* QOS parameter set length */ np_ulong QOS_offset; /* QOS parameter set offset */ } SCTP_exdata_req_t; /* * NC data acknowledgement request with options */ #define N_datack_req_t SCTP_datack_req_t typedef struct { np_ulong PRIM_type; /* always N_DATACK_REQ */ np_ulong QOS_length; /* QOS parameter set length */ np_ulong QOS_offset; /* QOS parameter set offset */ } SCTP_datack_req_t /* * NC data transfer indication with options */ #define N_data_ind_t SCTP_data_ind_t typedef struct { np_ulong PRIM_type; /* always N_DATA_IND */ np_ulong DATA_xfer_flags; /* data transfer flags */ np_ulong QOS_length; /* QOS parameter set length */ np_ulong QOS_offset; /* QOS parameter set offset */ } SCTP_data_ind_t; /* * NC expedited data indication with options */ #define N_exdata_ind_t SCTP_exdata_ind_t typedef struct { np_ulong PRIM_type; /* always N_EXDATA_REQ */ np_ulong QOS_length; /* QOS parameter set length */ np_ulong QOS_offset; /* QOS parameter set offset */ } SCTP_exdata_ind_t; /* * NC data acknowledgement indications with options */ #define N_datack_ind_t SCTP_datack_ind_t typedef struct { np_ulong PRIM_type; /* always N_DATACK_IND */ np_ulong QOS_length; /* QOS parameter set length */ np_ulong QOS_offset; /* QOS parameter set offset */ } SCTP_datack_ind_t; #ifdef __KERNEL__ /* * N_DATA_REQ 3 - Connection-Mode data transfer request * --------------------------------------------------------------- */ #define n_data_req sctp_data_req static inline mblk_t *sctp_data_req(uint flags, uint ppi, uint sid, mblk_t * dp) { mblk_t *mp; SCTP_data_req_t *p; N_qos_str_sel_sctp_t *q; if ((mp = allocb(sizeof(*p) + sizeof(*q), BPRI_MED))) { mp->b_datap->db_type = M_PROTO; p = (SCTP_data_req_t *) mp->b_wptr; p->PRIM_type = N_DATA_REQ; p->DATA_xfer_flags = flags; p->QOS_length = sizeof(*q); p->QOS_offset = sizeof(*p); mp->b_wptr += sizeof(*p); q = (N_qos_str_sel_sctp_t *) mp->b_wptr; q->n_qos_type = N_QOS_STR_SEL_SCTP; q->ppi = ppi; q->sid = sid; q->ssn = N_QOS_UNKNOWN; q->tsn = N_QOS_UNKNOWN; mp->b_wptr += sizeof(*q); mp->b_cont = dp; } return (mp); } /* * N_EXDATA_REQ 4 - Expedited data request * --------------------------------------------------------------- */ #define n_exdata_req sctp_exdata_req static inline mblk_t *sctp_exdata_req(uint ppi, uint sid, mblk_t * dp) { mblk_t *mp; SCTP_exdata_req_t *p; N_qos_str_sel_sctp_t *q; if ((mp = allocb(sizeof(*p) + sizeof(*q), BPRI_MED))) { mp->b_band = 254; mp->b_datap->db_type = M_PROTO; p = (SCTP_exdata_req_t *) mp->b_wptr; p->PRIM_type = N_EXDATA_REQ; p->QOS_length = sizeof(*q); p->QOS_offset = sizeof(*p); mp->b_wptr += sizeof(*p); q = (N_qos_str_sel_sctp_t *) mp->b_wptr; q->n_qos_type = N_QOS_STR_SEL_SCTP; q->ppi = ppi; q->sid = sid; q->ssn = N_QOS_UNKNOWN; q->tsn = N_QOS_UNKNOWN; mp->b_wptr += sizeof(*q); mp->b_cont = dp; } return (mp); } /* * N_DATACK_REQ 23 - Data acknowledgement request * --------------------------------------------------------------- */ #define n_datack_req sctp_datack_req static inline mblk_t *sctp_datack_req(uint ppi, uint sid, uint ssn, uint tsn) { mblk_t *mp; SCTP_datack_req_t *p; N_qos_str_sel_sctp_t *q; if ((mp = allocb(sizeof(*p) + sizeof(*q), BPRI_MED))) { mp->b_datap->db_type = M_PROTO; p = (SCTP_datack_req_t *) mp->b_wptr; p->PRIM_type = N_DATACK_REQ; p->QOS_length = sizeof(*q); p->QOS_offset = sizeof(*p); mp->b_wptr += sizeof(*p); q = (N_qos_str_sel_sctp_t *) mp->b_wptr; q->n_qos_type = N_QOS_STR_SEL_SCTP; q->ppi = ppi; q->sid = sid; q->ssn = ssn; q->tsn = tsn; mp->b_wptr += sizeof(*q); } return (mp); } /* * N_DATA_IND 14 - Incoming connection-mode data indication * --------------------------------------------------------------- */ #define n_data_ind sctp_data_ind static inline mblk_t *sctp_data_ind(uint flags, uint ppi, uint sid, uint ssn, uint tsn, mblk_t * dp) { mblk_t *mp; SCTP_data_ind_t *p; N_qos_str_sel_sctp_t *q; if ((mp = allocb(sizeof(*p) + sizeof(*q), BPRI_MED))) { mp->b_datap->db_type = M_PROTO; p = (SCTP_data_req_t *) mp->b_wptr; p->PRIM_type = N_DATA_IND; p->DATA_xfer_flags = flags; p->QOS_length = sizeof(*q); p->QOS_offset = sizeof(*p); mp->b_wptr += sizeof(*p); q = (N_qos_str_sel_sctp_t *) mp->b_wptr; q->n_qos_type = N_QOS_STR_SEL_SCTP; q->ppi = ppi; q->sid = sid; q->ssn = ssn; q->tsn = tsn; mp->b_wptr += sizeof(*q); mp->b_cont = dp; } return (mp); } /* * N_EXDATA_IND 15 - Incoming expedited data indication * --------------------------------------------------------------- */ #define n_exdata_ind sctp_exdata_ind static inline mblk_t *sctp_exdata_ind(uint ppi, uint sid, uint ssn, uint tsn, mblk_t * dp) { mblk_t *mp; SCTP_exdata_ind_t *p; N_qos_str_sel_sctp_t *q; if ((mp = allocb(sizeof(*p) + sizeof(*q), BPRI_MED))) { mp->b_band = 254; mp->b_datap->db_type = M_PROTO; p = (SCTP_exdata_ind_t *) mp->b_wptr; p->PRIM_type = N_EXDATA_IND; p->QOS_length = sizeof(*q); p->QOS_offset = sizeof(*p); mp->b_wptr += sizeof(*p); q = (N_qos_str_sel_sctp_t *) mp->b_wptr; q->n_qos_type = N_QOS_STR_SEL_SCTP; q->ppi = ppi; q->sid = sid; q->ssn = ssn; q->tsn = tsn; mp->b_wptr += sizeof(*q); mp->b_cont = dp; } return (mp); } /* * N_DATACK_IND 24 - Data acknowledgement indication * --------------------------------------------------------------- */ #define n_datack_ind sctp_datack_ind static inline mblk_t *sctp_datack_ind(uint ppi, uint sid, uint ssn, uint tsn) { mblk_t *mp; SCTP_datack_ind_t *p; N_qos_str_sel_sctp_t *q; if ((mp = allocb(sizeof(*p) + sizeof(*q), BPRI_MED))) { mp->b_datap->db_type = M_PROTO; p = (SCTP_datack_ind_t *) mp->b_wptr; p->PRIM_type = N_DATACK_IND; p->QOS_length = sizeof(*q); p->QOS_offset = sizeof(*p); mp->b_wptr += sizeof(*p); q = (N_qos_str_sel_sctp_t *) mp->b_wptr; q->n_qos_type = N_QOS_STR_SEL_SCTP; q->ppi = ppi; q->sid = sid; q->ssn = ssn; q->tsn = tsn; mp->b_wptr += sizeof(*q); } return (mp); } #endif #endif /* __SS7_SCTP_H__ */
|
|||||||||||||||||||||||||||
OpenSS7 SS7 for the Common Man |
Home | Overview | Status | News | Documentation | Resources | About | ||||||||||||||||||||
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |