summaryrefslogtreecommitdiff
path: root/main/json.c
diff options
context:
space:
mode:
authorJonathan Rose <jrose@digium.com>2013-05-17 17:36:10 +0000
committerJonathan Rose <jrose@digium.com>2013-05-17 17:36:10 +0000
commitb90bba7a303bf57c3c874a1c8f506d39d4e78a9c (patch)
tree56e6ca0d885b1e9e11856a6be44b4b92582f5606 /main/json.c
parent15945a7185187a3d79c7c7247a297bf92b49c139 (diff)
Stasis: Update security events to use Stasis
Also moves ACL messages to the security topic and gets rid of the ACL topic (closes issue ASTERISK-21103) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2496/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@388975 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/json.c')
-rw-r--r--main/json.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/main/json.c b/main/json.c
index 87971f04a..5b69ccbaa 100644
--- a/main/json.c
+++ b/main/json.c
@@ -527,6 +527,50 @@ struct ast_json *ast_json_timeval(const struct timeval tv, const char *zone)
return ast_json_string_create(buf);
}
+struct ast_json *ast_json_ipaddr(const struct ast_sockaddr *addr, enum ast_transport transport_type)
+{
+ struct ast_str *string = ast_str_alloca(64);
+
+ if (!string) {
+ return NULL;
+ }
+
+ ast_str_set(&string, 0, (ast_sockaddr_is_ipv4(addr) ||
+ ast_sockaddr_is_ipv4_mapped(addr)) ? "IPV4/" : "IPV6/");
+
+ if (transport_type) {
+ char *transport_string = NULL;
+
+ /* NOTE: None will be applied if multiple transport types are specified in transport_type */
+ switch(transport_type) {
+ case AST_TRANSPORT_UDP:
+ transport_string = "UDP";
+ break;
+ case AST_TRANSPORT_TCP:
+ transport_string = "TCP";
+ break;
+ case AST_TRANSPORT_TLS:
+ transport_string = "TLS";
+ break;
+ case AST_TRANSPORT_WS:
+ transport_string = "WS";
+ break;
+ case AST_TRANSPORT_WSS:
+ transport_string = "WSS";
+ break;
+ }
+
+ if (transport_string) {
+ ast_str_append(&string, 0, "%s/", transport_string);
+ }
+ }
+
+ ast_str_append(&string, 0, "%s", ast_sockaddr_stringify_addr(addr));
+ ast_str_append(&string, 0, "/%s", ast_sockaddr_stringify_port(addr));
+
+ return ast_json_string_create(ast_str_buffer(string));
+}
+
void ast_json_init(void)
{
/* Setup to use Asterisk custom allocators */