[svn-commits] russell: branch group/security_events r199585 - /team/group/security_events/c...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jun 8 08:27:27 CDT 2009


Author: russell
Date: Mon Jun  8 08:27:23 2009
New Revision: 199585

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=199585
Log:
Add chan_sip helper function for reporting invalid username

Modified:
    team/group/security_events/channels/chan_sip.c

Modified: team/group/security_events/channels/chan_sip.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/security_events/channels/chan_sip.c?view=diff&rev=199585&r1=199584&r2=199585
==============================================================================
--- team/group/security_events/channels/chan_sip.c (original)
+++ team/group/security_events/channels/chan_sip.c Mon Jun  8 08:27:23 2009
@@ -2484,6 +2484,15 @@
 static int attempt_transfer(struct sip_dual *transferer, struct sip_dual *target);
 static int do_magic_pickup(struct ast_channel *channel, const char *extension, const char *context);
 
+/* ------ Security Event Handling ------ */
+static enum ast_security_event_transport_type security_event_transport_type(
+		const enum sip_transport sip_transport);
+static void report_failed_acl(const struct sip_peer *peer, const struct sip_pvt *pvt,
+		const struct sockaddr_in *sin_remote, const char *acl_name);
+/*! XXX \todo Use this in the proper places in chan_sip */
+static void attribute_unused report_invalid_peer(const char *peer_name, const struct sip_pvt *pvt,
+		const struct sockaddr_in *sin_remote);
+
 /*!
  * \brief generic function for determining if a correct transport is being 
  * used to contact a peer
@@ -11928,6 +11937,32 @@
 	};
 
 	ast_security_event_report(AST_SEC_EVT(&failed_acl_event));
+}
+
+static void report_invalid_peer(const char *peer_name, const struct sip_pvt *pvt,
+		const struct sockaddr_in *sin_remote)
+{
+	struct sockaddr_in sin_local = { 0, };
+	const struct ast_security_event_inval_acct_id inval_acct_id = {
+		.common.event_type = AST_SECURITY_EVENT_INVAL_ACCT_ID,
+		.common.version    = AST_SECURITY_EVENT_INVAL_ACCT_ID_VERSION,
+		.common.service    = "SIP",
+
+		.module     = AST_MODULE,
+		.account_id = peer_name,
+		.session_id = pvt->callid,
+		.session_tv = &pvt->session_tv,
+		.local_addr = {
+			.sin       = encode_sin_local(&sin_local, pvt),
+			.transport = security_event_transport_type(pvt->socket.type),
+		},
+		.remote_addr = {
+			.sin       = sin_remote,
+			.transport = security_event_transport_type(pvt->socket.type),
+		},
+	};
+
+	ast_security_event_report(AST_SEC_EVT(&inval_acct_id));
 }
 
 /*! \brief Parse contact header and save registration (peer registration) */




More information about the svn-commits mailing list