#
CHANNEL_LIBS=chan_vofr.so chan_modem.so \
- chan_modem_aopen.so chan_iax.so chan_oss.so
+ chan_modem_aopen.so chan_iax.so chan_oss.so \
+ chan_modem_i4l.so
CHANNEL_LIBS+=$(shell [ -f /usr/include/linux/ixjuser.h ] && echo chan_phone.so)
struct sockaddr_in addr;
int formats;
struct in_addr mask;
+
+ /* Dynamic Registration fields */
+ int dynamic;
+ struct sockaddr_in defaddr;
+ char regsecret[80];
+ char methods[80];
+ struct timeval nexpire;
+ int expire;
+ struct iax_ha *ha;
struct iax_peer *next;
};
if (!strcasecmp(v->name, "secret"))
strncpy(peer->secret, v->value, sizeof(peer->secret));
else if (!strcasecmp(v->name, "host")) {
- hp = gethostbyname(v->value);
- if (hp) {
- memcpy(&peer->addr.sin_addr, hp->h_addr, sizeof(peer->addr.sin_addr));
+ if (!strcasecmp(v->value, "dynamic")) {
+ /* They'll register with us */
+ peer->dynamic = 1;
+ memset(&peer->addr.sin_addr, 0, 4);
} else {
- ast_log(LOG_WARNING, "Unable to lookup '%s'\n", v->value);
- free(peer);
- return NULL;
+ peer->dynamic = 0;
+ hp = gethostbyname(v->value);
+ if (hp) {
+ memcpy(&peer->addr.sin_addr, hp->h_addr, sizeof(peer->addr.sin_addr));
+ } else {
+ ast_log(LOG_WARNING, "Unable to lookup '%s'\n", v->value);
+ free(peer);
+ return NULL;
+ }
+ if (!maskfound)
+ inet_aton("255.255.255.255", &peer->mask);
}
- if (!maskfound)
- inet_aton("255.255.255.255", &peer->mask);
}
else if (!strcasecmp(v->name, "mask")) {
maskfound++;
#define AST_IAX_COMMAND_INVAL 10
#define AST_IAX_COMMAND_LAGRQ 11
#define AST_IAX_COMMAND_LAGRP 12
+#define AST_IAX_COMMAND_REGRQ 13
+#define AST_IAX_COMMAND_REGRP 14
+
+#define AST_DEFAULT_REG_EXPIRE 60 /* By default require re-registration once per minute */
#define AST_DEFAULT_IAX_PORTNO 5036