SIP_Templates: Allow passing Require,Security-client,Supported fields to REGISTER templates

These fields are used in IMS.

Change-Id: I20a0df5633db8c0e7732659c1316b85e63317afc
diff --git a/library/SIP_Templates.ttcn b/library/SIP_Templates.ttcn
index 2498f49..7e33b3b 100644
--- a/library/SIP_Templates.ttcn
+++ b/library/SIP_Templates.ttcn
@@ -197,6 +197,28 @@
 	deltaSec := deltaSec
 }
 
+
+// [20.32]
+template (value) Require ts_Require(template (value) OptionTag_List optionsTags := {}) := {
+	fieldName := REQUIRE_E,
+	optionsTags := optionsTags
+}
+template (present) Require tr_Require(template (present) OptionTag_List optionsTags := ?) := {
+	fieldName := REQUIRE_E,
+	optionsTags := optionsTags
+}
+
+// [20.37]
+template (value) Supported ts_Supported(template (value) OptionTag_List optionsTags := {}) := {
+	fieldName := SUPPORTED_E,
+	optionsTags := optionsTags
+}
+template (present) Supported tr_Supported(template (present) OptionTag_List optionsTags := ?) := {
+	fieldName := SUPPORTED_E,
+	optionsTags := optionsTags
+}
+
+
 template (value) SipAddr ts_SipAddr(template (value) HostPort host_port,
 				    template (omit) UserInfo user_info := omit,
 				    template (omit) charstring displayName := omit,
@@ -442,6 +464,31 @@
 	challenge := challenge
 }
 
+// RFC3329
+template (present) Security_client
+tr_Security_client(template (present) Security_mechanism_list sec_mechanism_list := ?) := {
+	fieldName := SECURITY_CLIENT_E,
+	sec_mechanism_list := sec_mechanism_list
+}
+template (value) Security_client
+ts_Security_client(template (value) Security_mechanism_list sec_mechanism_list) := {
+	fieldName := SECURITY_CLIENT_E,
+	sec_mechanism_list := sec_mechanism_list
+}
+
+template (present) Security_mechanism
+tr_Security_mechanism(template (present) charstring name := ?,
+		      template SemicolonParam_List params := *) := {
+	mechanism_name := name,
+	mechanism_params := params
+}
+template (value) Security_mechanism
+ts_Security_mechanism(template (value) charstring name,
+		      template (omit) SemicolonParam_List params := omit) := {
+	mechanism_name := name,
+	mechanism_params := params
+}
+
 template (value) MessageHeader ts_SIP_msgHeader_empty := c_SIP_msgHeader_empty;
 template (value) MessageHeader
 ts_SIP_msgh_std(template (value) CallidString call_id,
@@ -455,6 +502,9 @@
 		template (omit)Authorization authorization := omit,
 		template (value) Method_List allow_methods := c_SIP_defaultMethods,
 		template (omit) Expires expires := omit,
+		template (omit) Require require := omit,
+		template (omit) Security_client security_client := omit,
+		template (omit) Supported supported := omit,
 		template (omit) WwwAuthenticate wwwAuthenticate := omit
 	) modifies ts_SIP_msgHeader_empty := {
 	allow := {
@@ -479,6 +529,9 @@
 		addressField := from_addr.addr,
 		fromParams := from_addr.params
 	},
+	require := require,
+	security_client := security_client,
+	supported := supported,
 	toField := {
 		fieldName := TO_E,
 		addressField := to_addr.addr,
@@ -520,6 +573,9 @@
 		template integer seq_nr := ?,
 		template Method_List allow_methods := *,
 		template Expires expires := *,
+		template Require require := *,
+		template Security_client security_client := *,
+		template Supported supported := *,
 		template WwwAuthenticate wwwAuthenticate := *
 		) modifies t_SIP_msgHeader_any := {
 	allow := tr_AllowMethods(allow_methods),
@@ -540,6 +596,9 @@
 		addressField := from_addr.addr,
 		fromParams := from_addr.params
 	},
+	require := require,
+	security_client := security_client,
+	supported := supported,
 	toField := {
 		fieldName := TO_E,
 		addressField := to_addr.addr,
@@ -561,13 +620,19 @@
 		template (omit) Contact contact,
 		template (omit) Expires expires,
 		template (omit) Authorization authorization := omit,
+		template (omit) Require require := omit,
+		template (omit) Security_client security_client := omit,
+		template (omit) Supported supported := omit,
 		template (omit) charstring body := omit) := {
 	requestLine := ts_SIP_ReqLine(REGISTER_E, sip_url_host_port),
 	msgHeader := ts_SIP_msgh_std(call_id, from_addr, to_addr, contact,
 				     "REGISTER", seq_nr, via,
 				     f_ContentTypeOrOmit(ts_CT_SDP, body),
 				     authorization := authorization,
-				     expires := expires),
+				     expires := expires,
+				     require := require,
+				     security_client := security_client,
+				     supported := supported),
 	messageBody := body,
 	payload := omit
 }
@@ -580,11 +645,17 @@
 		template integer seq_nr := *,
 		template Contact contact := *,
 		template Expires expires := *,
+		template Require require := *,
+		template Security_client security_client := *,
+		template Supported supported := *,
 		template charstring body := *) := {
 	requestLine := tr_SIP_ReqLine(REGISTER_E, sip_url_host_port),
 	msgHeader := tr_SIP_msgh_std(call_id, from_addr, to_addr, contact,
 				     via, "REGISTER", *, seq_nr,
-				     expires := expires),
+				     expires := expires,
+				     require := require,
+				     security_client := security_client,
+				     supported := supported),
 	messageBody := body,
 	payload := omit
 }