|
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/mgi_ioctl.h
#ifndef __SS7_MGI_IOCTL_H__
#define __SS7_MGI_IOCTL_H__
#ident "@(#) $Name: $($Revision: 0.8.2.3 $) Copyright (c) 1997-2002 OpenSS7 Corporation."
#include <linux/ioctl.h>
#define MG_IOC_MAGIC 'G'
#define MG_OBJ_TYPE_MG 1 /* media gateway control */
#define MG_OBJ_TYPE_SE 2 /* communications session */
#define MG_OBJ_TYPE_LG 3 /* connection leg */
#define MG_OBJ_TYPE_CH 4 /* channel */
#define MG_OBJ_TYPE_MX 5 /* multiplex */
#define MG_OBJ_TYPE_DF 6 /* default */
/*
* Media Gateway options
* -----------------------------------
*/
typedef struct mg_opt_conf_mg {
ulong type; /* media type */
ulong flags; /* options flags */
ulong encoding; /* encoding */
ulong block_size; /* data block size (bits) */
ulong sample_size; /* sample size (bits) */
ulong samples; /* samples per block */
ulong rate; /* clock rate (samples/second) */
ulong tx_channels; /* number of tx channels */
ulong rx_channels; /* number of rx channels */
} mg_opt_conf_mg_t;
/*
* Multiplex options
* -----------------------------------
* A multiplex is an upper or lower stream.
*
* This specifies the media characteristics of a simple multiplex. This is
* typically a read-only options structure. To change media
* characteristics, change the characteristics of a channel a multiplex
* normally requires that the lower stream be unlinked an relinked or the
* pass-thru ioctls performed.
*/
typedef struct mg_opt_conf_mx {
ulong type; /* media type */
ulong flags; /* options flags */
ulong encoding; /* encoding */
ulong block_size; /* data block size (bits) */
ulong sample_size; /* sample size (bits) */
ulong samples; /* samples per block */
ulong rate; /* clock rate (samples/second) */
ulong tx_channels; /* number of tx channels */
ulong rx_channels; /* number of rx channels */
} mg_opt_conf_mx_t;
/*
* Channel options
* -----------------------------------
* A channel is a slot in a media stream.
*
* This specifies the media characteristics of the channel. The number of
* tx_channels and rx_channels must be 1 or 0.
*/
typedef struct mg_opt_conf_ch {
ulong type; /* media type */
ulong flags; /* options flags */
ulong encoding; /* encoding */
ulong block_size; /* data block size (bits) */
ulong sample_size; /* sample size (bits) */
ulong samples; /* samples per block */
ulong rate; /* clock rate (samples/second) */
ulong tx_channels; /* number of tx channels */
ulong rx_channels; /* number of rx channels */
} mg_opt_conf_ch_t;
/*
* Connection Leg options
* -----------------------------------
* A connection leg is a collection of channels that act together towards
* a termination that are normally controlled as a group. An example would
* be multiple 64kbps channels making up a multi-rate call. Channels must be
* added to connection legs before they can be used. Channels that are
* not engaged in a call can remain attached to their connection legs for
* their entire life-cycle, or can be rearranged by the media gateway.
*
* Connection legs have their own characteristics. Only connection legs
* of like characteristics to a communications session can be associated with
* a communications session.
*
* Connection legs do not necessarily have the same media characteristics
* as the channels that make up the termination point. The connection leg
* object performs media conversion between the channel media type and the
* conenction leg.
*
* Channels which have multiple embedded Tx and Rx channels can be associated
* with more than one Connection Leg.
*
* When an channel is added to a communications session, connection leg
* objects may be dynamically created that will adapt between the media
* type of the communications session and the media type of the channel.
* In that case, commnection leg characteristics are read-only.
*/
typedef struct mg_opt_conf_lg {
ulong type; /* media type */
ulong flags; /* options flags */
ulong encoding; /* encoding */
ulong block_size; /* data block size (bits) */
ulong sample_size; /* sample size (bits) */
ulong samples; /* samples per block */
ulong rate; /* clock rate (samples/second) */
ulong tx_channels; /* number of tx channels */
ulong rx_channels; /* number of rx channels */
} mg_opt_conf_lg_t;
/*
* Communications Session options
* -----------------------------------
* A communications session is a collection of connection legs engaged in a
* communications session. A communications session has its own media
* characteristics. Only terminations points of like characteristics can be
* associated in a communications session. Comunications sessions do not do
* media conversion between connection legs. Connection legs are responsible
* for performing any necessary media conversion between the communications
* session and the channel.
*
* Not all communications sessions necessarily support all media types. For
* example, communications sessions which support conferencing might only
* support 16-bit linear PCM coded voice. The reason being that conferencing
* calculations need not perform conversion.
*
* The media characteristics refer the to media characteristics of a
* participant in the communications session as supported by the
* participating connnection legs.
*
* Communications session are by dynamically created by adding channels or
* connection legs to the NULL communications session. These configuration
* options are normall read-only.
*/
typedef struct mg_opt_conf_se {
ulong type; /* media type */
ulong flags; /* options flags */
ulong encoding; /* encoding */
ulong block_size; /* data block size (bits) */
ulong sample_size; /* sample size (bits) */
ulong samples; /* samples per block */
ulong rate; /* clock rate (samples/second) */
ulong tx_channels; /* number of tx channels */
ulong rx_channels; /* number of rx channels */
} mg_opt_conf_se_t;
/*
* Default options
* -----------------------------------
* When channels, connection legs and communications sessions are newly
* created and can support different media types, the default media type will
* be initially assigned.
*/
typedef struct mg_opt_conf_df {
ulong type; /* media type */
ulong flags; /* options flags */
ulong encoding; /* encoding */
ulong block_size; /* data block size (bits) */
ulong sample_size; /* sample size (bits) */
ulong samples; /* samples per block */
ulong rate; /* clock rate (samples/second) */
ulong tx_channels; /* number of tx channels */
ulong rx_channels; /* number of rx channels */
} mg_opt_conf_df_t;
/*
* OPTIONS
*/
typedef struct mg_option {
ulong type;
ulong id;
/* followed by specific object options structure */
} mg_option_t;
#define MG_IOCGOPTIONS _IOWR( MG_IOC_MAGIC, 0, mg_option_t )
#define MG_IOCSOPTIONS _IOWR( MG_IOC_MAGIC, 1, mg_option_t )
/*
* Media Gateway configuration
* -----------------------------------
*/
typedef struct mg_conf_mg {
} mg_conf_mg_t;
/*
* Multiplex configuration
* -----------------------------------
*/
typedef struct mg_conf_mx {
ulong muxid; /* lower multiplexing driver id */
} mg_conf_mx_t;
/*
* Channel configuration
* -----------------------------------
*/
typedef struct mg_conf_ch {
ulong tpid; /* termination point id */
ulong mxid; /* multiplex id */
ulong slot; /* slot in multiplex */
ulong encoding; /* channel encoding */
} mg_conf_ch_t;
/*
* Connection leg configuration
* -----------------------------------
* Connection leg object are not created statically.
*/
typedef struct mg_conf_lg {
ulong seid; /* session id */
} mg_conf_lg_t;
/*
* Communications Session configuration
* -----------------------------------
* Communications session objects are not created statically.
*/
typedef struct mg_conf_se {
} mg_conf_se_t;
/*
* Default configuration
* -----------------------------------
* The default object is not created statically.
*/
typedef struct mg_conf_df {
} mg_conf_df_t;
/*
* CONFIGURATION
*/
typedef struct mg_config {
ulong type; /* object type */
ulong id; /* object id */
ulong cmd; /* configuration command */
/* followed by specific configuration structure */
} mg_config_t;
#define MG_GET 0 /* get configuration */
#define MG_ADD 1 /* add configuration */
#define MG_CHA 2 /* cha configuration */
#define MG_DEL 3 /* del configuration */
#define MG_IOCGCONFIG _IOWR( MG_IOC_MAGIC, 2, mg_config_t )
#define MG_IOCSCONFIG _IOWR( MG_IOC_MAGIC, 3, mg_config_t )
#define MG_IOCTCONFIG _IOWR( MG_IOC_MAGIC, 4, mg_config_t )
#define MG_IOCCCONFIG _IOWR( MG_IOC_MAGIC, 5, mg_config_t )
/*
* Multiplex state
* -----------------------------------
*/
typedef struct mg_timers_mx {
} mg_timers_mx_t;
typedef struct mg_statem_mx {
struct mg_timers_mx timers;
/* followed by the channel associations */
struct {
ulong slot; /* slot number */
ulong chid; /* channel id */
} slot[0];
} mg_statem_mx_t;
/*
* Channel state
* -----------------------------------
*/
typedef struct mg_timers_ch {
} mg_timers_ch_t;
typedef struct mg_statem_ch {
struct mg_timers_ch timers;
ulong mxid;
} mg_statem_ch_t;
/*
* Termination Point state
* -----------------------------------
*/
typedef struct mg_timers_lg {
} mg_timers_lg_t;
typedef struct mg_statem_lg {
struct mg_timers_lg timers;
ulong mxid;
} mg_statem_lg_t;
/*
* Communications Session state
* -----------------------------------
*/
typedef struct mg_timers_se {
} mg_timers_se_t;
typedef struct mg_statem_se {
struct mg_timers_se timers;
/* followed by the connection leg participation */
struct {
ulong role; /* participant role */
ulong flags; /* topology flags */
ulong lgid; /* connection leg id */
} leg[0];
} mg_statem_se_t;
/*
* Media Gateway state
* -----------------------------------
*/
typedef struct mg_timers_mg {
} mg_timers_mg_t;
typedef struct mg_statem_mg {
struct mg_timers_mg timers;
} mg_statem_mg_t;
/*
* Default state
* -----------------------------------
*/
typedef struct mg_timers_df {
} mg_timers_df_t;
typedef struct mg_statem_df {
struct mg_timers_df timers;
/* followed by a list of connection sessions */
struct {
ulong seid; /* session identifier */
} sessions[0];
} mg_statem_df_t;
/*
* STATE
*/
typedef struct mg_statem {
ulong type; /* object type */
ulong id; /* object id */
ulong flags; /* object flags */
ulong state; /* object state */
/* followed by object-specific state structure */
} mg_statem_t;
#define MG_IOCGSTATEM _IOR( MG_IOC_MAGIC, 6, mg_statem_t )
#define MG_IOCCMRESET _IOR( MG_IOC_MAGIC, 7, mg_statem_t )
/*
* Media Gateway statistics
* -----------------------------------
*/
typedef struct mg_stats_mg {
} mg_stats_mg_t;
/*
* Multiplex statistics
* -----------------------------------
*/
typedef struct mg_stats_mx {
} mg_stats_mx_t;
/*
* Channel statistics
* -----------------------------------
*/
typedef struct mg_stats_ch {
} mg_stats_ch_t;
/*
* Connection Leg statistics
* -----------------------------------
*/
typedef struct mg_stats_lg {
} mg_stats_lg_t;
/*
* Communications Session statistics
* -----------------------------------
*/
typedef struct mg_stats_se {
} mg_stats_se_t;
/*
* Default statistics
* -----------------------------------
*/
typedef struct mg_stats_df {
} mg_stats_df_t;
/*
* STATISTICS
*/
typedef struct mg_stats {
ulong type; /* object type */
ulong id; /* object id */
/* followed by object-specific statistics type */
} mg_stats_t;
#define MG_IOCGSTATSP _IOR( MG_IOC_MAGIC, 8, mg_stats_t )
#define MG_IOCSSTATSP _IOWR( MG_IOC_MAGIC, 9, mg_stats_t )
#define MG_IOCGSTATS _IOR( MG_IOC_MAGIC, 10, mg_stats_t )
#define MG_IOCCSTATS _IOW( MG_IOC_MAGIC, 11, mg_stats_t )
/*
* Media Gateway notifications
* -----------------------------------
*/
typedef struct mg_notify_mg {
ulong events;
} mg_notify_mg_t;
/*
* Multiplex notifications
* -----------------------------------
*/
typedef struct mg_notify_mx {
ulong events;
} mg_notify_mx_t;
/*
* Channel notifications
* -----------------------------------
*/
typedef struct mg_notify_ch {
ulong events;
} mg_notify_ch_t;
/*
* Connection Leg notifications
* -----------------------------------
*/
typedef struct mg_notify_lg {
ulong events;
} mg_notify_lg_t;
/*
* Communications Session notifications
* -----------------------------------
*/
typedef struct mg_notify_se {
ulong events;
} mg_notify_se_t;
/*
* Default notifications
* -----------------------------------
*/
typedef struct mg_notify_df {
ulong events;
} mg_notify_df_t;
/*
* EVENTS
*/
typedef struct mg_notify {
ulong type; /* object type */
ulong id; /* object id */
/* followed by object-specific notification type */
} mg_notify_t;
#define MG_IOCGNOTIFY _IOR( MG_IOC_MAGIC, 12, mg_notify_t )
#define MG_IOCSNOTIFY _IOW( MG_IOC_MAGIC, 13, mg_notify_t )
#define MG_IOCCNOTIFY _IOW( MG_IOC_MAGIC, 14, mg_notify_t )
/*
* MG MANAGEMENT
*/
typedef struct mg_mgmt {
ulong type; /* object type */
ulong id; /* object id */
ulong cmd; /* mgmt command */
} mg_mgmt_t;
#define MG_MGMT_BLOCK 1
#define MG_MGMT_UNBLOCK 2
#define MG_MGMT_RESET 3
#define MG_MGMT_QUERY 4
#define MG_IOCCMGMT _IOWR( MG_IOC_MAGIC, 15, mg_mgmt_t )
/*
* PASS LOWER
*/
typedef struct mg_pass {
ulong muxid; /* mux index of lower CH structure to pass message to */
ulong type; /* type of message block */
ulong band; /* band of message block */
ulong ctl_length; /* length of cntl part */
ulong dat_length; /* length of data part */
/* followed by cntl and data part of message to pass to to channel */
} mg_pass_t;
#define MG_IOCCPASS _IOWR( MG_IOC_MAGIC, 16, mg_pass_t )
#define MG_IOC_FIRST 0
#define MG_IOC_LAST 16
#define MG_IOC_PRIVATE 32
#endif /* __SS7_MGI_IOCTL_H__ */
|
|||||||||||||||||||||||||||
|
OpenSS7 SS7 for the Common Man |
Home | Overview | Status | News | Documentation | Resources | About | ||||||||||||||||||||
|
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
|||||||||||||||||||||||||||