--- sip.h 2012-01-31 09:22:50.000000000 -0500 +++ sip.h.RL 2012-01-31 10:57:29.000000000 -0500 @@ -426,6 +426,7 @@ PIDF_XML, MWI_NOTIFICATION, CALL_COMPLETION, + DIALOG_RLMI_XML, }; /*! \brief The number of media types in enum \ref media_type below. */ @@ -1072,10 +1073,14 @@ int t38id; /*!< T.38 Response ID */ struct sip_refer *refer; /*!< REFER: SIP transfer data structure */ enum subscriptiontype subscribed; /*!< SUBSCRIBE: Is this dialog a subscription? */ + enum subscriptiontype multipart_subscribed; /*!< SUBSCRIBE: is this dialog a multipart/related subscription? */ int stateid; /*!< SUBSCRIBE: ID for devicestate subscriptions */ int laststate; /*!< SUBSCRIBE: Last known extension state */ int dialogver; /*!< SUBSCRIBE: Version for subscription dialog-info */ + struct sip_rlist *rlist; /*!< SUBSCRIBE: Resource list to get notifications from */ + AST_LIST_ENTRY(sip_pvt) rlist_entry; /* SUBSCRIBE: entry into resource list's list of watchers */ + struct ast_dsp *dsp; /*!< Inband DTMF or Fax CNG tone Detection dsp */ struct sip_peer *relatedpeer; /*!< If this dialog is related to a peer, which one @@ -1168,6 +1173,32 @@ char mailbox[2]; }; +struct sip_rlist_resource { + int stateid; + int laststate; + + AST_DECLARE_STRING_FIELDS( + AST_STRING_FIELD(exten); /*!< This is an extension to watch within rlist */ + AST_STRING_FIELD(contentid); /*!< Dialog Content ID */ + ); + + AST_LIST_ENTRY(sip_rlist_resource) entry; +}; + +/* todohere add brief */ +struct sip_rlist { + char name[80]; /*!< This is the extension to subscribe too for list */ + AST_DECLARE_STRING_FIELDS ( + AST_STRING_FIELD(context); + AST_STRING_FIELD(contentid); /*!< Dialog Content ID */ + ); + int the_mark; + int num_watchers; + int startmonitor; + AST_LIST_HEAD_NOLOCK(, sip_pvt) watchers; + AST_LIST_HEAD_NOLOCK(, sip_rlist_resource) resources; +}; + /*! \brief Structure for SIP peer data, we place calls to peers if registered or fixed IP address (host) */ /* XXX field 'name' must be first otherwise sip_addrcmp() will fail, as will astobj2 hashing of the structure */ @@ -1752,7 +1783,7 @@ /* RFC3959: SIP Early session support */ { SIP_OPT_EARLY_SESSION, NOT_SUPPORTED, "early-session" }, /* SIMPLE events: RFC4662 */ - { SIP_OPT_EVENTLIST, NOT_SUPPORTED, "eventlist" }, + { SIP_OPT_EVENTLIST, SUPPORTED, "eventlist" }, /* RFC 4916- Connected line ID updates */ { SIP_OPT_FROMCHANGE, NOT_SUPPORTED, "from-change" }, /* GRUU: Globally Routable User Agent URI's */