Add restart IE helper
Signed-off-by: Karsten Keil <kkeil@linux-pingi.de>
This commit is contained in:
parent
28a849fabc
commit
29b5b2d8d0
|
@ -144,11 +144,14 @@
|
|||
#define CAUSE_NOUSER_RESPONDING 18
|
||||
#define CAUSE_CALL_REJECTED 21
|
||||
#define CAUSE_NONSELECTED_USER 26
|
||||
#define CAUSE_DEST_OUT_OF_ORDER 27
|
||||
#define CAUSE_INVALID_NUMBER 28
|
||||
#define CAUSE_STATUS_RESPONSE 30
|
||||
#define CAUSE_NORMALUNSPECIFIED 31
|
||||
#define CAUSE_NO_CHANNEL 34
|
||||
#define CAUSE_NET_OUT_OF_ORDER 28
|
||||
#define CAUSE_TEMPORARY_FAILURE 41
|
||||
#define CAUSE_SEQ_CONGESTION 42
|
||||
#define CAUSE_REQUESTED_CHANNEL 44
|
||||
#define CAUSE_RESOURCES_UNAVAIL 47
|
||||
#define CAUSE_INVALID_CALLREF 81
|
||||
|
@ -163,6 +166,13 @@
|
|||
|
||||
#define NO_CAUSE 254
|
||||
|
||||
/*
|
||||
* Restart indication class values
|
||||
*/
|
||||
#define RESTART_CLASS_CHANNEL 0
|
||||
#define RESTART_CLASS_SINGLE 6
|
||||
#define RESTART_CLASS_ALL 7
|
||||
|
||||
/*
|
||||
* Parser error codes
|
||||
*/
|
||||
|
@ -273,6 +283,7 @@ extern int mi_encode_useruser(struct l3_msg *, int, int, char *);
|
|||
extern int mi_encode_cause(struct l3_msg *l, int cause, int, int, unsigned char *);
|
||||
extern int mi_encode_progress(struct l3_msg *, struct misdn_progress_info *);
|
||||
extern int mi_encode_date(struct l3_msg *, time_t);
|
||||
extern int mi_encode_restart_ind(struct l3_msg *, unsigned char);
|
||||
|
||||
/* Common IE decode helpers */
|
||||
extern int mi_decode_progress(struct l3_msg *, struct misdn_progress_info *);
|
||||
|
@ -286,6 +297,7 @@ extern int mi_decode_called_nr(struct l3_msg *, int *, int *, char *);
|
|||
extern int mi_decode_redir_nr(struct l3_msg *, int *, int *, int *, int *, int *, char *);
|
||||
extern int mi_decode_display(struct l3_msg *, char *, int);
|
||||
extern int mi_decode_useruser(struct l3_msg *, int *, int *, char *, int);
|
||||
extern int mi_decode_restart_ind(struct l3_msg *, unsigned char *);
|
||||
|
||||
/* some print helpers */
|
||||
extern const char *mi_bearer2str(int);
|
||||
|
|
31
lib/q931.c
31
lib/q931.c
|
@ -355,7 +355,8 @@ mi_encode_channel_id(struct l3_msg *l3m, struct misdn_channel_info *ci)
|
|||
return 0;
|
||||
|
||||
if (ci->nr == MI_CHAN_ANY || ci->nr == MI_CHAN_NONE ||
|
||||
(ci->flags & MI_CHAN_FLG_NONE) || (ci->flags & MI_CHAN_FLG_ANY))
|
||||
(ci->flags & MI_CHAN_FLG_NONE) || (ci->flags & MI_CHAN_FLG_ANY) ||
|
||||
(!(ci->flags & MI_CHAN_FLG_EXCLUSIVE)))
|
||||
excl = 0;
|
||||
|
||||
if (ci->flags & MI_CHAN_FLG_OTHER_IF) { /* PRI */
|
||||
|
@ -581,6 +582,21 @@ mi_encode_date(struct l3_msg *l3m, time_t ti)
|
|||
return add_layer3_ie(l3m, IE_DATE, 5, ie);
|
||||
}
|
||||
|
||||
int
|
||||
mi_encode_restart_ind(struct l3_msg *l3m, unsigned char _class)
|
||||
{
|
||||
switch(_class) {
|
||||
case RESTART_CLASS_CHANNEL:
|
||||
case RESTART_CLASS_SINGLE:
|
||||
case RESTART_CLASS_ALL:
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
_class |= 0x80;
|
||||
return add_layer3_ie(l3m, IE_RESTART_IND, 1, &_class);
|
||||
}
|
||||
|
||||
/* helper functions to decode common IE */
|
||||
|
||||
#define _ASSIGN_PVAL(p, v) if (p) *p = (v)
|
||||
|
@ -917,6 +933,19 @@ mi_decode_useruser(struct l3_msg *l3m, int *pd, int *uulen, char *uu, int maxlen
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
mi_decode_restart_ind(struct l3_msg *l3m, unsigned char *_class)
|
||||
{
|
||||
if (l3m == NULL || !l3m->restart_ind)
|
||||
return 0;
|
||||
if (!_class)
|
||||
return 0;
|
||||
if (*l3m->restart_ind < 1)
|
||||
return 0;
|
||||
_ASSIGN_PVAL(_class, 0x7f & l3m->restart_ind[1]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *
|
||||
mi_bearer2str(int cap)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue