diff -Naur asterisk-1.4.18-orig/channels/chan_sip.c asterisk-1.4.18/channels/chan_sip.c --- asterisk-1.4.18-orig/channels/chan_sip.c 2008-01-31 17:52:49.000000000 -0200 +++ asterisk-1.4.18/channels/chan_sip.c 2008-02-11 14:54:02.000000000 -0200 @@ -1087,6 +1087,7 @@ int amaflags; /*!< AMA Flags (for billing) */ char tohost[MAXHOSTNAMELEN]; /*!< If not dynamic, IP address */ char regexten[AST_MAX_EXTENSION]; /*!< Extension to register (if regcontext is used) */ + char peerexten[32]; /*!< Extension to register on ast_db */ char fromuser[80]; /*!< From: user when calling this peer */ char fromdomain[MAXHOSTNAMELEN]; /*!< From: domain when calling this peer */ char fullcontact[256]; /*!< Contact registered with us (not in sip.conf) */ @@ -10369,6 +10370,7 @@ ast_cli(fd, " Defaddr->IP : %s Port %d\n", ast_inet_ntoa(peer->defaddr.sin_addr), ntohs(peer->defaddr.sin_port)); if (!ast_strlen_zero(global_regcontext)) ast_cli(fd, " Reg. exten : %s\n", peer->regexten); + ast_cli(fd, " Peer Exten : %s\n", peer->peerexten); ast_cli(fd, " Def. Username: %s\n", peer->username); ast_cli(fd, " SIP Options : "); if (peer->sipoptions) { @@ -10450,6 +10452,7 @@ astman_append(s, "Default-Username: %s\r\n", peer->username); if (!ast_strlen_zero(global_regcontext)) astman_append(s, "RegExtension: %s\r\n", peer->regexten); + astman_append(s, "Extension: %s\r\n", peer->peerexten); astman_append(s, "Codecs: "); ast_getformatname_multiple(codec_buf, sizeof(codec_buf) -1, peer->capability); astman_append(s, "%s\r\n", codec_buf); @@ -11739,6 +11742,8 @@ ast_copy_string(buf, peer->language, len); } else if (!strcasecmp(colname, "regexten")) { ast_copy_string(buf, peer->regexten, len); + } else if (!strcasecmp(colname, "peerexten")) { + ast_copy_string(buf, peer->peerexten, len); } else if (!strcasecmp(colname, "limit")) { snprintf(buf, len, "%d", peer->call_limit); } else if (!strcasecmp(colname, "curcalls")) { @@ -11795,6 +11800,7 @@ "- codecs The configured codecs.\n" "- status Status (if qualify=yes).\n" "- regexten Registration extension\n" + "- peerexten Peer extension\n" "- limit Call limit (call-limit)\n" "- curcalls Current amount of calls \n" " Only available if call-limit is set\n" @@ -16404,6 +16410,7 @@ peer->fromdomain[0] = '\0'; peer->fromuser[0] = '\0'; peer->regexten[0] = '\0'; + peer->peerexten[0] = '\0'; peer->mailbox[0] = '\0'; peer->callgroup = 0; peer->pickupgroup = 0; @@ -16585,6 +16592,9 @@ ast_copy_string(peer->language, v->value, sizeof(peer->language)); } else if (!strcasecmp(v->name, "regexten")) { ast_copy_string(peer->regexten, v->value, sizeof(peer->regexten)); + } else if (!strcasecmp(v->name, "peerexten")) { + ast_copy_string(peer->peerexten, v->value, sizeof(peer->peerexten)); + ast_db_put("SIP/peerexten", ast_strdup(v->value), ast_strdup(peer->name)); } else if (!strcasecmp(v->name, "call-limit") || !strcasecmp(v->name, "incominglimit")) { peer->call_limit = atoi(v->value); if (peer->call_limit < 0)