[asterisk-commits] rmudgett: branch rmudgett/cid r267398 - in /team/rmudgett/cid: ./ channels/ c...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Jun 2 18:59:51 CDT 2010


Author: rmudgett
Date: Wed Jun  2 18:59:47 2010
New Revision: 267398

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=267398
Log:
Merged revisions 267350,267352 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
  r267350 | rmudgett | 2010-06-02 17:28:58 -0500 (Wed, 02 Jun 2010) | 9 lines
  
  Add ETSI Malicious Call ID support.
  
  Add the ability to report malicious callers as an AMI event in the call
  event class.
  
  Relevant specification: EN 300 180
  
  Review:	https://reviewboard.asterisk.org/r/576/
........
  r267352 | russell | 2010-06-02 17:46:37 -0500 (Wed, 02 Jun 2010) | 7 lines
  
  try to fix some random chan_h323 compilation failures
  
  After some debugging, the random chan_h323 build failures appear to be due
  to complications introduced by some chan_h323 specific build stuff getting
  triggered during a clean.  Simplify this by moving the h323 clean commands
  down into channels/makefile.
........

Modified:
    team/rmudgett/cid/   (props changed)
    team/rmudgett/cid/CHANGES
    team/rmudgett/cid/channels/Makefile
    team/rmudgett/cid/channels/h323/Makefile.in
    team/rmudgett/cid/channels/sig_pri.c
    team/rmudgett/cid/configure
    team/rmudgett/cid/configure.ac
    team/rmudgett/cid/include/asterisk/autoconfig.h.in

Propchange: team/rmudgett/cid/
------------------------------------------------------------------------------
    automerge = *

Propchange: team/rmudgett/cid/
------------------------------------------------------------------------------
--- cid-integrated (original)
+++ cid-integrated Wed Jun  2 18:59:47 2010
@@ -1,1 +1,1 @@
-/trunk:1-267335
+/trunk:1-267396

Modified: team/rmudgett/cid/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/CHANGES?view=diff&rev=267398&r1=267397&r2=267398
==============================================================================
--- team/rmudgett/cid/CHANGES (original)
+++ team/rmudgett/cid/CHANGES Wed Jun  2 18:59:47 2010
@@ -346,6 +346,7 @@
  * Added the ability to send and receive ETSI Advice-Of-Charge messages. 
  * Added the ability to support call waiting calls.  (The SETUP has no B channel
    assigned.)
+ * Added Malicious Call ID (MCID) event to the AMI call event class.
 
 Asterisk Manager Interface
 --------------------------

Modified: team/rmudgett/cid/channels/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/channels/Makefile?view=diff&rev=267398&r1=267397&r2=267398
==============================================================================
--- team/rmudgett/cid/channels/Makefile (original)
+++ team/rmudgett/cid/channels/Makefile Wed Jun  2 18:59:47 2010
@@ -63,8 +63,8 @@
 
 clean::
 	$(MAKE) -C misdn clean
-	if [ -f h323/Makefile ]; then $(MAKE) -C h323 clean; fi
 	rm -f sip/*.o sip/*.i
+	rm -f h323/libchanh323.a h323/Makefile.ast h323/*.o h323/*.dep
 
 dist-clean::
 	rm -f h323/Makefile

Modified: team/rmudgett/cid/channels/h323/Makefile.in
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/channels/h323/Makefile.in?view=diff&rev=267398&r1=267397&r2=267398
==============================================================================
--- team/rmudgett/cid/channels/h323/Makefile.in (original)
+++ team/rmudgett/cid/channels/h323/Makefile.in Wed Jun  2 18:59:47 2010
@@ -47,4 +47,3 @@
 	@if [ -r $@ ] && cmp -s $@ $@.tmp; then rm -f $@.tmp; else mv -f $@.tmp $@; fi
 
 clean::
-	rm -f $(TARGET) $(OBJS) Makefile.ast *.dep

Modified: team/rmudgett/cid/channels/sig_pri.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/channels/sig_pri.c?view=diff&rev=267398&r1=267397&r2=267398
==============================================================================
--- team/rmudgett/cid/channels/sig_pri.c (original)
+++ team/rmudgett/cid/channels/sig_pri.c Wed Jun  2 18:59:47 2010
@@ -1747,6 +1747,126 @@
 	/* Did not match any pattern in the list. */
 	return 0;
 }
+
+#if defined(HAVE_PRI_MCID)
+/*!
+ * \internal
+ * \brief Append the given party id to the event string.
+ * \since 1.8
+ *
+ * \param msg Event message string being built.
+ * \param prefix Prefix to add to the party id lines.
+ * \param party Party information to encode.
+ *
+ * \return Nothing
+ */
+static void sig_pri_event_party_id(struct ast_str **msg, const char *prefix, struct ast_party_id *party)
+{
+	int pres;
+
+	/* Combined party presentation */
+	pres = ast_party_id_presentation(party);
+	ast_str_append(msg, 0, "%sPres: %d (%s)\r\n", prefix, pres,
+		ast_describe_caller_presentation(pres));
+
+	/* Party number */
+	ast_str_append(msg, 0, "%sNumValid: %d\r\n", prefix,
+		(unsigned) party->XXX_number.valid);
+	ast_str_append(msg, 0, "%sNum: %s\r\n", prefix,
+		S_COR(party->XXX_number.valid, party->XXX_number.str, ""));
+	ast_str_append(msg, 0, "%ston: %d\r\n", prefix, party->XXX_number.plan);
+	if (party->XXX_number.valid) {
+		ast_str_append(msg, 0, "%sNumPlan: %d\r\n", prefix, party->XXX_number.plan);
+		ast_str_append(msg, 0, "%sNumPres: %d (%s)\r\n", prefix,
+			party->XXX_number.presentation,
+			ast_describe_caller_presentation(party->XXX_number.presentation));
+	}
+
+	/* Party name */
+	ast_str_append(msg, 0, "%sNameValid: %d\r\n", prefix,
+		(unsigned) party->XXX_name.valid);
+	ast_str_append(msg, 0, "%sName: %s\r\n", prefix,
+		S_COR(party->XXX_name.valid, party->XXX_name.str, ""));
+	if (party->XXX_name.valid) {
+		ast_str_append(msg, 0, "%sNameCharSet: %s\r\n", prefix,
+			ast_party_name_charset_describe(party->XXX_name.char_set));
+		ast_str_append(msg, 0, "%sNamePres: %d (%s)\r\n", prefix,
+			party->XXX_name.presentation,
+			ast_describe_caller_presentation(party->XXX_name.presentation));
+	}
+
+#if defined(HAVE_PRI_SUBADDR)
+	/* Party subaddress */
+	if (party->subaddress.valid) {
+		static const char subaddress[] = "Subaddr";
+
+		ast_str_append(msg, 0, "%s%s: %s\r\n", prefix, subaddress,
+			S_OR(party->subaddress.str, ""));
+		ast_str_append(msg, 0, "%s%sType: %d\r\n", prefix, subaddress,
+			party->subaddress.type);
+		ast_str_append(msg, 0, "%s%sOdd: %d\r\n", prefix, subaddress,
+			party->subaddress.odd_even_indicator);
+	}
+#endif	/* defined(HAVE_PRI_SUBADDR) */
+}
+#endif	/* defined(HAVE_PRI_MCID) */
+
+#if defined(HAVE_PRI_MCID)
+/*!
+ * \internal
+ * \brief Handle the MCID event.
+ * \since 1.8
+ *
+ * \param pri sig_pri PRI control structure.
+ * \param mcid MCID event parameters.
+ * \param owner Asterisk channel associated with the call.
+ * NULL if Asterisk no longer has the ast_channel struct.
+ *
+ * \note Assumes the pri->lock is already obtained.
+ * \note Assumes the owner channel lock is already obtained if still present.
+ *
+ * \return Nothing
+ */
+static void sig_pri_mcid_event(struct sig_pri_pri *pri, const struct pri_subcmd_mcid_req *mcid, struct ast_channel *owner)
+{
+	struct ast_channel *chans[1];
+	struct ast_str *msg;
+	struct ast_party_id party;
+
+	msg = ast_str_create(4096);
+	if (!msg) {
+		return;
+	}
+
+	if (owner) {
+		/* The owner channel is present. */
+		ast_str_append(&msg, 0, "Channel: %s\r\n", owner->name);
+		ast_str_append(&msg, 0, "UniqueID: %s\r\n", owner->uniqueid);
+
+		sig_pri_event_party_id(&msg, "CallerID", &owner->connected.id);
+	} else {
+		/*
+		 * Since we no longer have an owner channel,
+		 * we have to use the caller information supplied by libpri.
+		 */
+		ast_party_id_init(&party);
+		sig_pri_party_id_convert(&party, &mcid->originator, pri);
+		sig_pri_event_party_id(&msg, "CallerID", &party);
+		ast_party_id_free(&party);
+	}
+
+	/* Always use libpri's called party information. */
+	ast_party_id_init(&party);
+	sig_pri_party_id_convert(&party, &mcid->answerer, pri);
+	sig_pri_event_party_id(&msg, "ConnectedID", &party);
+	ast_party_id_free(&party);
+
+	chans[0] = owner;
+	ast_manager_event_multichan(EVENT_FLAG_CALL, "MCID", owner ? 1 : 0, chans, "%s",
+		ast_str_buffer(msg));
+	ast_free(msg);
+}
+#endif	/* defined(HAVE_PRI_MCID) */
 
 #if defined(HAVE_PRI_CALL_HOLD) || defined(HAVE_PRI_TRANSFER)
 /*!
@@ -3745,6 +3865,21 @@
 			}
 			break;
 #endif	/* defined(HAVE_PRI_AOC_EVENTS) */
+#if defined(HAVE_PRI_MCID)
+		case PRI_SUBCMD_MCID_REQ:
+			sig_pri_lock_owner(pri, chanpos);
+			owner = pri->pvts[chanpos]->owner;
+			sig_pri_mcid_event(pri, &subcmd->u.mcid_req, owner);
+			if (owner) {
+				ast_channel_unlock(owner);
+			}
+			break;
+#endif	/* defined(HAVE_PRI_MCID) */
+#if defined(HAVE_PRI_MCID)
+		case PRI_SUBCMD_MCID_RSP:
+			/* Ignore for now. */
+			break;
+#endif	/* defined(HAVE_PRI_MCID) */
 		default:
 			ast_debug(2,
 				"Unknown call subcommand(%d) in %s event on channel %d/%d on span %d.\n",
@@ -6558,6 +6693,9 @@
 #if defined(HAVE_PRI_CALL_WAITING)
 	pri_connect_ack_enable(pri->pri, 1);
 #endif	/* defined(HAVE_PRI_CALL_WAITING) */
+#if defined(HAVE_PRI_MCID)
+	pri_mcid_enable(pri->pri, 1);
+#endif	/* defined(HAVE_PRI_MCID) */
 
 	pri->resetpos = -1;
 	if (ast_pthread_create_background(&pri->master, NULL, pri_dchannel, pri)) {

Modified: team/rmudgett/cid/configure.ac
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/configure.ac?view=diff&rev=267398&r1=267397&r2=267398
==============================================================================
--- team/rmudgett/cid/configure.ac (original)
+++ team/rmudgett/cid/configure.ac Wed Jun  2 18:59:47 2010
@@ -341,6 +341,7 @@
 AST_EXT_LIB_SETUP([POPT], [popt], [popt])
 AST_EXT_LIB_SETUP([PORTAUDIO], [PortAudio], [portaudio])
 AST_EXT_LIB_SETUP([PRI], [ISDN PRI], [pri])
+AST_EXT_LIB_SETUP_DEPENDENT([PRI_MCID], [ISDN PRI Malicious Call ID], [PRI], [pri])
 AST_EXT_LIB_SETUP_DEPENDENT([PRI_CALL_WAITING], [ISDN PRI call waiting supplementary service], [PRI], [pri])
 AST_EXT_LIB_SETUP_DEPENDENT([PRI_AOC_EVENTS], [ISDN PRI advice of charge supplementary service events], [PRI], [pri])
 AST_EXT_LIB_SETUP_DEPENDENT([PRI_TRANSFER], [ISDN PRI call transfer supplementary service], [PRI], [pri])
@@ -1593,6 +1594,7 @@
 AST_EXT_LIB_CHECK([PORTAUDIO], [portaudio], [Pa_GetDeviceCount], [portaudio.h])
 
 AST_EXT_LIB_CHECK([PRI], [pri], [pri_connected_line_update], [libpri.h])
+AST_EXT_LIB_CHECK([PRI_MCID], [pri], [pri_mcid_enable], [libpri.h])
 AST_EXT_LIB_CHECK([PRI_CALL_WAITING], [pri], [pri_connect_ack_enable], [libpri.h])
 AST_EXT_LIB_CHECK([PRI_AOC_EVENTS], [pri], [pri_aoc_events_enable], [libpri.h])
 AST_EXT_LIB_CHECK([PRI_TRANSFER], [pri], [pri_transfer_enable], [libpri.h])

Modified: team/rmudgett/cid/include/asterisk/autoconfig.h.in
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/include/asterisk/autoconfig.h.in?view=diff&rev=267398&r1=267397&r2=267398
==============================================================================
--- team/rmudgett/cid/include/asterisk/autoconfig.h.in (original)
+++ team/rmudgett/cid/include/asterisk/autoconfig.h.in Wed Jun  2 18:59:47 2010
@@ -556,6 +556,9 @@
 
 /* Define to 1 if you have the ISDN PRI set_inbanddisconnect library. */
 #undef HAVE_PRI_INBANDDISCONNECT
+
+/* Define to 1 if you have the ISDN PRI Malicious Call ID library. */
+#undef HAVE_PRI_MCID
 
 /* Define to 1 if you have the ISDN progress with cause library. */
 #undef HAVE_PRI_PROG_W_CAUSE




More information about the asterisk-commits mailing list