diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index f407e21a2b06e84ebc9e707652c99bb2b7b80a0e..c901f917b3bd2d449f4ada6f2eb5e3c70de5b1eb 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -233,29 +233,29 @@ struct iax2_context { struct iax2_context *next; }; -#define IAX_HASCALLERID (1 << 0) /* CallerID has been specified */ -#define IAX_DELME (1 << 1) /* Needs to be deleted */ -#define IAX_TEMPONLY (1 << 2) /* Temporary (realtime) */ -#define IAX_TRUNK (1 << 3) /* Treat as a trunk */ -#define IAX_NOTRANSFER (1 << 4) /* Don't native bridge */ -#define IAX_USEJITTERBUF (1 << 5) /* Use jitter buffer */ -#define IAX_DYNAMIC (1 << 6) /* dynamic peer */ -#define IAX_SENDANI (1 << 7) /* Send ANI along with CallerID */ -#define IAX_MESSAGEDETAIL (1 << 8) /* Show exact numbers */ -#define IAX_ALREADYGONE (1 << 9) /* Already disconnected */ -#define IAX_PROVISION (1 << 10) /* This is a provisioning request */ -#define IAX_QUELCH (1 << 11) /* Whether or not we quelch audio */ -#define IAX_ENCRYPTED (1 << 12) /* Whether we should assume encrypted tx/rx */ -#define IAX_KEYPOPULATED (1 << 13) /* Whether we have a key populated */ -#define IAX_CODEC_USER_FIRST (1 << 14) /* are we willing to let the other guy choose the codec? */ -#define IAX_CODEC_NOPREFS (1 << 15) /* Force old behaviour by turning off prefs */ -#define IAX_CODEC_NOCAP (1 << 16) /* only consider requested format and ignore capabilities*/ -#define IAX_RTCACHEFRIENDS (1 << 17) /* let realtime stay till your reload */ -#define IAX_RTUPDATE (1 << 18) /* Send a realtime update */ -#define IAX_RTAUTOCLEAR (1 << 19) /* erase me on expire */ -#define IAX_FORCEJITTERBUF (1 << 20) /* Force jitterbuffer, even when bridged to a channel that can take jitter */ -#define IAX_RTIGNOREREGEXPIRE (1 << 21) -#define IAX_TRUNKTIMESTAMPS (1 << 22) /* Send trunk timestamps */ +#define IAX_HASCALLERID (1 << 0) /*!< CallerID has been specified */ +#define IAX_DELME (1 << 1) /*!< Needs to be deleted */ +#define IAX_TEMPONLY (1 << 2) /*!< Temporary (realtime) */ +#define IAX_TRUNK (1 << 3) /*!< Treat as a trunk */ +#define IAX_NOTRANSFER (1 << 4) /*!< Don't native bridge */ +#define IAX_USEJITTERBUF (1 << 5) /*!< Use jitter buffer */ +#define IAX_DYNAMIC (1 << 6) /*!< dynamic peer */ +#define IAX_SENDANI (1 << 7) /*!< Send ANI along with CallerID */ +#define IAX_MESSAGEDETAIL (1 << 8) /*!< Show exact numbers */ +#define IAX_ALREADYGONE (1 << 9) /*!< Already disconnected */ +#define IAX_PROVISION (1 << 10) /*!< This is a provisioning request */ +#define IAX_QUELCH (1 << 11) /*!< Whether or not we quelch audio */ +#define IAX_ENCRYPTED (1 << 12) /*!< Whether we should assume encrypted tx/rx */ +#define IAX_KEYPOPULATED (1 << 13) /*!< Whether we have a key populated */ +#define IAX_CODEC_USER_FIRST (1 << 14) /*!< are we willing to let the other guy choose the codec? */ +#define IAX_CODEC_NOPREFS (1 << 15) /*!< Force old behaviour by turning off prefs */ +#define IAX_CODEC_NOCAP (1 << 16) /*!< only consider requested format and ignore capabilities*/ +#define IAX_RTCACHEFRIENDS (1 << 17) /*!< let realtime stay till your reload */ +#define IAX_RTUPDATE (1 << 18) /*!< Send a realtime update */ +#define IAX_RTAUTOCLEAR (1 << 19) /*!< erase me on expire */ +#define IAX_FORCEJITTERBUF (1 << 20) /*!< Force jitterbuffer, even when bridged to a channel that can take jitter */ +#define IAX_RTIGNOREREGEXPIRE (1 << 21) /*!< When using realtime, ignore registration expiration */ +#define IAX_TRUNKTIMESTAMPS (1 << 22) /*!< Send trunk timestamps */ static int global_rtautoclear = 120; @@ -270,7 +270,7 @@ struct iax2_user { int authmethods; int encmethods; char accountcode[AST_MAX_ACCOUNT_CODE]; - char inkeys[80]; /* Key(s) this user can use to authenticate to us */ + char inkeys[80]; /*!< Key(s) this user can use to authenticate to us */ char language[MAX_LANGUAGE]; int amaflags; unsigned int flags; @@ -289,44 +289,44 @@ struct iax2_peer { char username[80]; char secret[80]; char dbsecret[80]; - char outkey[80]; /* What key we use to talk to this peer */ - char context[AST_MAX_CONTEXT]; /* For transfers only */ - char regexten[AST_MAX_EXTENSION]; /* Extension to register (if regcontext is used) */ - char peercontext[AST_MAX_EXTENSION]; /* Context to pass to peer */ - char mailbox[AST_MAX_EXTENSION]; /* Mailbox */ + char outkey[80]; /*!< What key we use to talk to this peer */ + char context[AST_MAX_CONTEXT]; /*!< For transfers only */ + char regexten[AST_MAX_EXTENSION]; /*!< Extension to register (if regcontext is used) */ + char peercontext[AST_MAX_EXTENSION]; /*!< Context to pass to peer */ + char mailbox[AST_MAX_EXTENSION]; /*!< Mailbox */ struct ast_codec_pref prefs; - struct ast_dnsmgr_entry *dnsmgr; /* DNS refresh manager */ + struct ast_dnsmgr_entry *dnsmgr; /*!< DNS refresh manager */ struct sockaddr_in addr; int formats; - int sockfd; /* Socket to use for transmission */ + int sockfd; /*!< Socket to use for transmission */ struct in_addr mask; unsigned int flags; /* Dynamic Registration fields */ - struct sockaddr_in defaddr; /* Default address if there is one */ - int authmethods; /* Authentication methods (IAX_AUTH_*) */ - int encmethods; /* Encryption methods (IAX_ENCRYPT_*) */ - char inkeys[80]; /* Key(s) this peer can use to authenticate to us */ + struct sockaddr_in defaddr; /*!< Default address if there is one */ + int authmethods; /*!< Authentication methods (IAX_AUTH_*) */ + int encmethods; /*!< Encryption methods (IAX_ENCRYPT_*) */ + char inkeys[80]; /*!< Key(s) this peer can use to authenticate to us */ /* Suggested caller id if registering */ - char cid_num[AST_MAX_EXTENSION]; /* Default context (for transfer really) */ - char cid_name[AST_MAX_EXTENSION]; /* Default context (for transfer really) */ + char cid_num[AST_MAX_EXTENSION]; /*!< Default context (for transfer really) */ + char cid_name[AST_MAX_EXTENSION]; /*!< Default context (for transfer really) */ - int expire; /* Schedule entry for expiry */ - int expiry; /* How soon to expire */ - int capability; /* Capability */ - char zonetag[80]; /* Time Zone */ + int expire; /*!< Schedule entry for expiry */ + int expiry; /*!< How soon to expire */ + int capability; /*!< Capability */ + char zonetag[80]; /*!< Time Zone */ /* Qualification */ - int callno; /* Call number of POKE request */ - int pokeexpire; /* When to expire poke */ - int lastms; /* How long last response took (in ms), or -1 for no response */ - int maxms; /* Max ms we will accept for the host to be up, 0 to not monitor */ - - int pokefreqok; /* How often to check if the host is up */ - int pokefreqnotok; /* How often to check when the host has been determined to be down */ - int historicms; /* How long recent average responses took */ - int smoothing; /* Sample over how many units to determine historic ms */ + int callno; /*!< Call number of POKE request */ + int pokeexpire; /*!< When to expire poke */ + int lastms; /*!< How long last response took (in ms), or -1 for no response */ + int maxms; /*!< Max ms we will accept for the host to be up, 0 to not monitor */ + + int pokefreqok; /*!< How often to check if the host is up */ + int pokefreqnotok; /*!< How often to check when the host has been determined to be down */ + int historicms; /*!< How long recent average responses took */ + int smoothing; /*!< Sample over how many units to determine historic ms */ struct ast_ha *ha; struct iax2_peer *next; @@ -338,11 +338,11 @@ static struct iax2_trunk_peer { ast_mutex_t lock; int sockfd; struct sockaddr_in addr; - struct timeval txtrunktime; /* Transmit trunktime */ - struct timeval rxtrunktime; /* Receive trunktime */ - struct timeval lasttxtime; /* Last transmitted trunktime */ - struct timeval trunkact; /* Last trunk activity */ - unsigned int lastsent; /* Last sent time */ + struct timeval txtrunktime; /*!< Transmit trunktime */ + struct timeval rxtrunktime; /*!< Receive trunktime */ + struct timeval lasttxtime; /*!< Last transmitted trunktime */ + struct timeval trunkact; /*!< Last trunk activity */ + unsigned int lastsent; /*!< Last sent time */ /* Trunk data and length */ unsigned char *trunkdata; unsigned int trunkdatalen; @@ -382,16 +382,16 @@ enum iax_transfer_state { }; struct iax2_registry { - struct sockaddr_in addr; /* Who we connect to for registration purposes */ + struct sockaddr_in addr; /*!< Who we connect to for registration purposes */ char username[80]; - char secret[80]; /* Password or key name in []'s */ + char secret[80]; /*!< Password or key name in []'s */ char random[80]; - int expire; /* Sched ID of expiration */ - int refresh; /* How often to refresh */ + int expire; /*!< Sched ID of expiration */ + int refresh; /*!< How often to refresh */ enum iax_reg_state regstate; - int messages; /* Message count */ - int callno; /* Associated call number if applicable */ - struct sockaddr_in us; /* Who the server thinks we are */ + int messages; /*!< Message count */ + int callno; /*!< Associated call number if applicable */ + struct sockaddr_in us; /*!< Who the server thinks we are */ struct iax2_registry *next; }; @@ -404,10 +404,10 @@ static struct iax2_registry *registrations; #define MAX_JITTER_BUFFER 50 #define MIN_JITTER_BUFFER 10 -#define DEFAULT_TRUNKDATA 640 * 10 /* 40ms, uncompressed linear * 10 channels */ -#define MAX_TRUNKDATA 640 * 200 /* 40ms, uncompressed linear * 200 channels */ +#define DEFAULT_TRUNKDATA 640 * 10 /*!< 40ms, uncompressed linear * 10 channels */ +#define MAX_TRUNKDATA 640 * 200 /*!< 40ms, uncompressed linear * 200 channels */ -#define MAX_TIMESTAMP_SKEW 160 /* maximum difference between actual and predicted ts for sending */ +#define MAX_TIMESTAMP_SKEW 160 /*!< maximum difference between actual and predicted ts for sending */ /* If consecutive voice frame timestamps jump by more than this many milliseconds, then jitter buffer will resync */ #define TS_GAP_FOR_JB_RESYNC 5000 @@ -428,147 +428,147 @@ struct iax_rr { }; struct chan_iax2_pvt { - /* Socket to send/receive on for this call */ + /*! Socket to send/receive on for this call */ int sockfd; - /* Last received voice format */ + /*! Last received voice format */ int voiceformat; - /* Last received voice format */ + /*! Last received voice format */ int videoformat; - /* Last sent voice format */ + /*! Last sent voice format */ int svoiceformat; - /* Last sent video format */ + /*! Last sent video format */ int svideoformat; - /* What we are capable of sending */ + /*! What we are capable of sending */ int capability; - /* Last received timestamp */ + /*! Last received timestamp */ unsigned int last; - /* Last sent timestamp - never send the same timestamp twice in a single call */ + /*! Last sent timestamp - never send the same timestamp twice in a single call */ unsigned int lastsent; - /* Next outgoing timestamp if everything is good */ + /*! Next outgoing timestamp if everything is good */ unsigned int nextpred; - /* True if the last voice we transmitted was not silence/CNG */ + /*! True if the last voice we transmitted was not silence/CNG */ int notsilenttx; - /* Ping time */ + /*! Ping time */ unsigned int pingtime; - /* Max time for initial response */ + /*! Max time for initial response */ int maxtime; - /* Peer Address */ + /*! Peer Address */ struct sockaddr_in addr; struct ast_codec_pref prefs; - /* Our call number */ + /*! Our call number */ unsigned short callno; - /* Peer callno */ + /*! Peer callno */ unsigned short peercallno; - /* Peer selected format */ + /*! Peer selected format */ int peerformat; - /* Peer capability */ + /*! Peer capability */ int peercapability; - /* timeval that we base our transmission on */ + /*! timeval that we base our transmission on */ struct timeval offset; - /* timeval that we base our delivery on */ + /*! timeval that we base our delivery on */ struct timeval rxcore; #ifdef NEWJB - /* The jitterbuffer */ + /*! The jitterbuffer */ jitterbuf *jb; - /* active jb read scheduler id */ + /*! active jb read scheduler id */ int jbid; #else - /* Historical delivery time */ + /*! Historical delivery time */ int history[MEMORY_SIZE]; - /* Current base jitterbuffer */ + /*! Current base jitterbuffer */ int jitterbuffer; - /* Current jitter measure */ + /*! Current jitter measure */ int jitter; - /* Historic jitter value */ + /*! Historic jitter value */ int historicjitter; #endif - /* LAG */ + /*! LAG */ int lag; - /* Error, as discovered by the manager */ + /*! Error, as discovered by the manager */ int error; - /* Owner if we have one */ + /*! Owner if we have one */ struct ast_channel *owner; - /* What's our state? */ + /*! What's our state? */ int state; - /* Expiry (optional) */ + /*! Expiry (optional) */ int expiry; - /* Next outgoing sequence number */ + /*! Next outgoing sequence number */ unsigned char oseqno; - /* Next sequence number they have not yet acknowledged */ + /*! Next sequence number they have not yet acknowledged */ unsigned char rseqno; - /* Next incoming sequence number */ + /*! Next incoming sequence number */ unsigned char iseqno; - /* Last incoming sequence number we have acknowledged */ + /*! Last incoming sequence number we have acknowledged */ unsigned char aseqno; - /* Peer name */ + /*! Peer name */ char peer[80]; - /* Default Context */ + /*! Default Context */ char context[80]; - /* Caller ID if available */ + /*! Caller ID if available */ char cid_num[80]; char cid_name[80]; - /* Hidden Caller ID (i.e. ANI) if appropriate */ + /*! Hidden Caller ID (i.e. ANI) if appropriate */ char ani[80]; - /* DNID */ + /*! DNID */ char dnid[80]; - /* Requested Extension */ + /*! Requested Extension */ char exten[AST_MAX_EXTENSION]; - /* Expected Username */ + /*! Expected Username */ char username[80]; - /* Expected Secret */ + /*! Expected Secret */ char secret[80]; - /* permitted authentication methods */ + /*! permitted authentication methods */ int authmethods; - /* permitted encryption methods */ + /*! permitted encryption methods */ int encmethods; - /* MD5 challenge */ + /*! MD5 challenge */ char challenge[10]; - /* Public keys permitted keys for incoming authentication */ + /*! Public keys permitted keys for incoming authentication */ char inkeys[80]; - /* Private key for outgoing authentication */ + /*! Private key for outgoing authentication */ char outkey[80]; - /* Encryption AES-128 Key */ + /*! Encryption AES-128 Key */ aes_encrypt_ctx ecx; - /* Decryption AES-128 Key */ + /*! Decryption AES-128 Key */ aes_decrypt_ctx dcx; - /* 32 bytes of semi-random data */ + /*! 32 bytes of semi-random data */ unsigned char semirand[32]; - /* Preferred language */ + /*! Preferred language */ char language[MAX_LANGUAGE]; - /* Hostname/peername for naming purposes */ + /*! Hostname/peername for naming purposes */ char host[80]; - /* Associated registry */ + /*! Associated registry */ struct iax2_registry *reg; - /* Associated peer for poking */ + /*! Associated peer for poking */ struct iax2_peer *peerpoke; - /* IAX_ flags */ + /*! IAX_ flags */ unsigned int flags; - /* Transferring status */ + /*! Transferring status */ enum iax_transfer_state transferring; - /* Transfer identifier */ + /*! Transfer identifier */ int transferid; - /* Who we are IAX transfering to */ + /*! Who we are IAX transfering to */ struct sockaddr_in transfer; - /* What's the new call number for the transfer */ + /*! What's the new call number for the transfer */ unsigned short transfercallno; - /* Transfer decrypt AES-128 Key */ + /*! Transfer decrypt AES-128 Key */ aes_encrypt_ctx tdcx; - /* Status of knowledge of peer ADSI capability */ + /*! Status of knowledge of peer ADSI capability */ int peeradsicpe; - /* Who we are bridged to */ + /*! Who we are bridged to */ unsigned short bridgecallno; unsigned int bridgesfmt; struct ast_trans_pvt *bridgetrans; - int pingid; /* Transmit PING request */ - int lagid; /* Retransmit lag request */ - int autoid; /* Auto hangup for Dialplan requestor */ - int authid; /* Authentication rejection ID */ - int authfail; /* Reason to report failure */ - int initid; /* Initial peer auto-congest ID (based on qualified peers) */ + int pingid; /*!< Transmit PING request */ + int lagid; /*!< Retransmit lag request */ + int autoid; /*!< Auto hangup for Dialplan requestor */ + int authid; /*!< Authentication rejection ID */ + int authfail; /*!< Reason to report failure */ + int initid; /*!< Initial peer auto-congest ID (based on qualified peers) */ int calling_ton; int calling_tns; int calling_pres; @@ -577,13 +577,13 @@ struct chan_iax2_pvt { int amaflags; struct iax2_dpcache *dpentries; struct ast_variable *vars; - /* last received remote rr */ + /*! last received remote rr */ struct iax_rr remote_rr; - /* Current base time: (just for stats) */ + /*! Current base time: (just for stats) */ int min; - /* Dropped frame count: (just for stats) */ + /*! Dropped frame count: (just for stats) */ int frames_dropped; - /* received frame count: (just for stats) */ + /*! received frame count: (just for stats) */ int frames_received; }; @@ -609,21 +609,21 @@ static struct ast_firmware_list { ast_mutex_t lock; } waresl; -/* Extension exists */ +/*! Extension exists */ #define CACHE_FLAG_EXISTS (1 << 0) -/* Extension is nonexistent */ +/*! Extension is nonexistent */ #define CACHE_FLAG_NONEXISTENT (1 << 1) -/* Extension can exist */ +/*! Extension can exist */ #define CACHE_FLAG_CANEXIST (1 << 2) -/* Waiting to hear back response */ +/*! Waiting to hear back response */ #define CACHE_FLAG_PENDING (1 << 3) -/* Timed out */ +/*! Timed out */ #define CACHE_FLAG_TIMEOUT (1 << 4) -/* Request transmitted */ +/*! Request transmitted */ #define CACHE_FLAG_TRANSMITTED (1 << 5) -/* Timeout */ +/*! Timeout */ #define CACHE_FLAG_UNKNOWN (1 << 6) -/* Matchmore */ +/*! Matchmore */ #define CACHE_FLAG_MATCHMORE (1 << 7) static struct iax2_dpcache { @@ -635,7 +635,7 @@ static struct iax2_dpcache { unsigned short callno; int waiters[256]; struct iax2_dpcache *next; - struct iax2_dpcache *peer; /* For linking in peers */ + struct iax2_dpcache *peer; /*!< For linking in peers */ } *dpcache; AST_MUTEX_DEFINE_STATIC(dpcache_lock);