reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
ParameterTypes.hxx
Go to the documentation of this file.
1#if !defined(RESIP_PARAMETERTYPES_HXX)
2#define RESIP_PARAMETERTYPES_HXX
3
17
18
19#define defineParam(_enum, _name, _type, _headertype, _RFC_ref_ignored) \
20 class _enum##_Param : public Param<_headertype> \
21 { \
22 public: \
23 typedef _type Type; \
24 typedef _type::Type DType; \
25 virtual ParameterTypes::Type getTypeNum() const; \
26 virtual const char* name() const { return _name; } \
27 _enum##_Param(); \
28 }; \
29 extern _enum##_Param p_##_enum
30
31#define defineParam2(_enum, _name, _type, _headertype, _headertype2, _RFC_ref_ignored) \
32 class _enum##_Param : public Param<_headertype>, public Param<_headertype2> \
33 { \
34 public: \
35 typedef _type Type; \
36 typedef _type::Type DType; \
37 virtual ParameterTypes::Type getTypeNum() const; \
38 virtual const char* name() const { return _name; } \
39 _enum##_Param(); \
40 }; \
41 extern _enum##_Param p_##_enum
42
43// .bwc. So far, I have not discovered any parameter types that are defined for
44// more than three ParserCategories. This may change. If so, we just create
45// another macro with one more _headertype field.
46#define defineParam3(_enum, _name, _type, _headertype, _headertype2, _headertype3, _RFC_ref_ignored) \
47 class _enum##_Param : public Param<_headertype>, public Param<_headertype2>, public Param<_headertype3> \
48 { \
49 public: \
50 typedef _type Type; \
51 typedef _type::Type DType; \
52 virtual ParameterTypes::Type getTypeNum() const; \
53 virtual const char* name() const { return _name; } \
54 _enum##_Param(); \
55 }; \
56 extern _enum##_Param p_##_enum
57
58namespace resip
59{
61{
62 public:
63 virtual ~ParamBase() {}
64 virtual ParameterTypes::Type getTypeNum() const = 0;
65 virtual const char* name() const = 0;
66};
67
68template<class T>
69class Param : virtual public ParamBase
70{};
71
72class Auth;
73class CSeqCategory;
74class CallID;
75class DateCategory;
76class ExpiresCategory;
77class GenericUri;
79class IntegerCategory;
80class UInt32Category;
81class Mime;
82class NameAddr;
83class PrivacyCategory;
84class RAckCategory;
85class RequestLine;
86class StatusLine;
87class StringCategory;
88class Token;
89class Uri;
90class Via;
91class WarningCategory;
93
94defineParam(data, "data", ExistsParameter, NameAddr, "RFC 3840");
95defineParam(control, "control", ExistsParameter, NameAddr, "RFC 3840");
96defineParam(mobility, "mobility", QuotedDataParameter, NameAddr, "RFC 3840"); // mobile|fixed
97defineParam(description, "description", QuotedDataParameter, NameAddr, "RFC 3840"); // <> quoted
98defineParam(events, "events", QuotedDataParameter, NameAddr, "RFC 3840"); // list
99defineParam(priority, "priority", QuotedDataParameter, NameAddr, "RFC 3840"); // non-urgent|normal|urgent|emergency
100defineParam(methods, "methods", QuotedDataParameter, NameAddr, "RFC 3840"); // list
101defineParam(schemes, "schemes", QuotedDataParameter, NameAddr, "RFC 3840"); // list
102defineParam(application, "application", ExistsParameter, NameAddr, "RFC 3840");
104defineParam(language, "language", QuotedDataParameter, NameAddr, "RFC 3840"); // list
105defineParam(type, "type", QuotedDataParameter, NameAddr, "RFC 3840"); // list
106defineParam(isFocus, "isfocus", ExistsParameter, NameAddr, "RFC 3840");
107defineParam(actor, "actor", QuotedDataParameter, NameAddr, "RFC 3840"); // principal|msg-taker|attendant|information
108defineParam2(text, "text", ExistsOrDataParameter, NameAddr, Token, "RFC 3326/3840");
109defineParam(cause, "cause", UInt32Parameter, Token, "RFC3326");
110defineParam(extensions, "extensions", QuotedDataParameter, NameAddr, "RFC 3840"); //list
111defineParam(Instance, "+sip.instance", QuotedDataParameter, NameAddr, "RFC 5626"); // <> quoted
112defineParam(regid, "reg-id", UInt32Parameter, NameAddr, "RFC 5626");
117
118defineParam(accessType, "access-type", DataParameter, Mime, "RFC 2046");
119defineParam(algorithm, "algorithm", DataParameter, Auth, "RFC 2617");
120defineParam(boundary, "boundary", DataParameter, Mime, "RFC 2046");
121defineParam(branch, "branch", BranchParameter, Via, "RFC 3261");
122defineParam(charset, "charset", DataParameter, Mime, "RFC 2045");
124defineParam2(comp, "comp", DataParameter, Uri, Via, "RFC 3486");
125defineParam(dAlg, "d-alg", DataParameter, Token, "RFC 3329");
126defineParam(dQop, "d-qop", DataParameter, Token, "RFC 3329");
128defineParam(directory, "directory", DataParameter, Mime, "RFC 2046");
129defineParam(domain, "domain", QuotedDataParameter, Auth, "RFC 3261");
130defineParam2(duration, "duration", UInt32Parameter, Uri, UInt32Category, "RFC 4240");
131defineParam(expiration, "expiration", QuotedDataParameter, Mime, "RFC 2046");
133defineParam(filename, "filename", DataParameter, Token, "RFC 2183");
134defineParam2(fromTag, "from-tag", DataParameter, Token, CallID, "RFC 4235");
135defineParam(handling, "handling", DataParameter, Token, "RFC 3261");
136defineParam(id, "id", DataParameter, Token, "RFC 3265");
137defineParam(lr, "lr", ExistsParameter, Uri, "RFC 3261");
138defineParam2(maddr, "maddr", DataParameter, Uri, Via, "RFC 3261");
139defineParam(method, "method", DataParameter, Uri, "RFC 3261");
140defineParam(micalg, "micalg", DataParameter, Mime, "RFC 1847");
141defineParam(mode, "mode", DataParameter, Mime, "RFC 2046");
142defineParam(name, "name", DataParameter, Mime, "RFC 2046");
143defineParam(nc, "nc", DataParameter, Auth, "RFC 2617");
144defineParam(nonce, "nonce", QuotedDataParameter, Auth, "RFC 2617");
145defineParam(opaque, "opaque", QuotedDataParameter, Auth, "RFC 2617");
146defineParam(permission, "permission", DataParameter, Mime, "RFC 2046");
147defineParam(protocol, "protocol", QuotedDataParameter, Mime, "RFC 1847");
148defineParam2(purpose, "purpose", DataParameter, GenericUri, TokenOrQuotedStringCategory, "RFC 3261, draft-ietf-cuss-sip-uui-17");
150defineParam(realm, "realm", QuotedDataParameter, Auth, "RFC 2617");
151defineParam2(reason, "reason", DataParameter, Token, NameAddr, "RFC 3265, 5806");
152defineParam(received, "received", ReceivedParameter, Via, "RFC 3261");
153defineParam(require, "require", ExistsParameter, Token, "RFC 5373");
154defineParam(response, "response", QuotedDataParameter, Auth, "RFC 3261");
155defineParam(retryAfter, "retry-after", UInt32Parameter, Token, "RFC 3265");
156defineParam(rinstance, "rinstance", DataParameter, Uri, "proprietary (resip)");
157defineParam(rport, "rport", RportParameter, Via, "RFC 3581");
158defineParam(server, "server", DataParameter, Mime, "RFC 2046");
159defineParam(site, "site", DataParameter, Mime, "RFC 2046");
160defineParam(size, "size", DataParameter, Mime, "RFC 2046");
161defineParam(smimeType, "smime-type", DataParameter, Mime, "RFC 2633");
162defineParam(stale, "stale", DataParameter, Auth, "RFC 2617");
163defineParam(tag, "tag", DataParameter, NameAddr, "RFC 3261");
164defineParam2(toTag, "to-tag", DataParameter, Token, CallID, "RFC 4235");
165defineParam(transport, "transport", DataParameter, Uri, "RFC 3261");
166defineParam2(ttl, "ttl", UInt32Parameter, Uri, Via, "RFC 3261");
167defineParam(uri, "uri", QuotedDataParameter, Auth, "RFC 3261");
168defineParam(user, "user", DataParameter, Uri, "RFC 3261, 4967");
169defineParam2(extension, "ext", DataParameter, Uri, Token, "RFC 3966"); // Token is used when ext is a user-parameter
170defineParam(username, "username", QuotedDataParameter, Auth, "RFC 3261");
171defineParam(earlyOnly, "early-only", ExistsParameter, CallID, "RFC 3891");
173
174defineParam(profileType, "profile-type", DataParameter, Token, "RFC 6080");
177defineParam(version, "version", QuotedDataParameter, Token, "RFC 6080");
178defineParam(effectiveBy, "effective-by", UInt32Parameter, Token, "RFC 6080");
179defineParam(document, "document", DataParameter, Token, "draft-ietf-sipping-config-framework-07 (removed in 08)");
180defineParam(appId, "app-id", DataParameter, Token, "draft-ietf-sipping-config-framework-05 (renamed to auid in 06, which was then removed in 08)");
181defineParam(networkUser, "network-user", DataParameter, Token, "draft-ietf-sipping-config-framework-11 (removed in 12)");
182
184
185defineParam2(sigcompId, "sigcomp-id", QuotedDataParameter, Uri, Via, "RFC 5049");
186defineParam(qop,"qop",DataParameter, Auth, "RFC 3261");
187
188defineParam(index, "index", DataParameter, NameAddr, "RFC 4244");
189defineParam(rc, "rc", DataParameter, NameAddr, "RFC 4244-bis");
190defineParam(mp, "mp", DataParameter, NameAddr, "RFC 4244-bis");
191defineParam(np, "np", DataParameter, NameAddr, "RFC 4244-bis");
192
193defineParam(utranCellId3gpp, "utran-cell-id-3gpp", DataParameter, Token, "RFC 3455"); // P-Access-Network-Info
194defineParam(cgi3gpp, "cgi-3gpp", DataParameter, Token, "RFC 3455"); // P-Access-Network-Info
195defineParam(ccf, "ccf", DataParameter, Token, "RFC 3455"); // P-Charging-Function-Addresses
196defineParam(ecf, "ecf", DataParameter, Token, "RFC 3455"); // P-Charging-Function-Addresses
197defineParam(icidValue, "icid-value", DataParameter, Token, "RFC 3455"); // P-Charging-Vector
198defineParam(icidGeneratedAt, "icid-generated-at", DataParameter, Token, "RFC 3455"); // P-Charging-Vector
199defineParam(origIoi, "orig-ioi", DataParameter, Token, "RFC 3455"); // P-Charging-Vector
200defineParam(termIoi, "term-ioi", DataParameter, Token, "RFC 3455"); // P-Charging-Vector
201
202defineParam(content, "content", DataParameter, TokenOrQuotedStringCategory, "draft-ietf-cuss-sip-uui-17"); // User-to-User
203defineParam(encoding, "encoding", DataParameter, TokenOrQuotedStringCategory, "draft-ietf-cuss-sip-uui-17"); // User-to-User
204
205defineParam(info, "info", UriParameter, IdentityCategory, "RFC 8224");
208
209// Diversion Header params
210defineParam(counter, "counter", UInt32Parameter, NameAddr, "RFC 5806");
212defineParam(privacy, "privacy", DataParameter, NameAddr, "RFC 5806");
213defineParam(screen, "screen", DataParameter, NameAddr, "RFC 5806");
214
215// Internal use only
217defineParam(addTransport, "addTransport", ExistsParameter, Uri, "RESIP INTERNAL");
218defineParam(wsSrcIp, "ws-src-ip", DataParameter, Uri, "RESIP INTERNAL (WebSocket)");
219defineParam(wsSrcPort, "ws-src-port", UInt32Parameter, Uri, "RESIP INTERNAL (WebSocket)");
220
221}
222
223#undef defineParam
224#undef defineParam2
225#undef defineParam3
226#endif
227
228/* ====================================================================
229 * The Vovida Software License, Version 1.0
230 *
231 * Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
232 * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
233 *
234 * Redistribution and use in source and binary forms, with or without
235 * modification, are permitted provided that the following conditions
236 * are met:
237 *
238 * 1. Redistributions of source code must retain the above copyright
239 * notice, this list of conditions and the following disclaimer.
240 *
241 * 2. Redistributions in binary form must reproduce the above copyright
242 * notice, this list of conditions and the following disclaimer in
243 * the documentation and/or other materials provided with the
244 * distribution.
245 *
246 * 3. The names "VOCAL", "Vovida Open Communication Application Library",
247 * and "Vovida Open Communication Application Library (VOCAL)" must
248 * not be used to endorse or promote products derived from this
249 * software without prior written permission. For written
250 * permission, please contact vocal@vovida.org.
251 *
252 * 4. Products derived from this software may not be called "VOCAL", nor
253 * may "VOCAL" appear in their name, without prior written
254 * permission of Vovida Networks, Inc.
255 *
256 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
257 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
258 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
259 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
260 * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
261 * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
262 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
263 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
264 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
265 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
266 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
267 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
268 * DAMAGE.
269 *
270 * ====================================================================
271 *
272 * This software consists of voluntary contributions made by Vovida
273 * Networks, Inc. and many individuals on behalf of Vovida Networks,
274 * Inc. For more information on Vovida Networks, Inc., please see
275 * <http://www.vovida.org/>.
276 *
277 */
#define defineParam(_enum, _name, _type, _RFC_ref_ignored)
Definition Auth.cxx:239
#define defineParam2(_enum, _name, _type, _headertype, _headertype2, _RFC_ref_ignored)
#define defineParam3(_enum, _name, _type, _headertype, _headertype2, _headertype3, _RFC_ref_ignored)
Represents the "credentials" and "challenge" elements in the SIP grammar.
Definition Auth.hxx:18
Represents the "via-branch" parameter of the RFC 3261 grammar.
Represents a CSeq header field value (this doesn't have an official name in the RFC 3261 grammar).
Represents the "callid" element in the SIP grammar.
Definition CallId.hxx:18
Generically represents miscellaneous parameter data.
Represents the "SIP-date" element in the RFC 3261 grammar.
Represents various parameters that are indicated to be in effect merely by being present,...
Represents the header field value for an Expires-type header.
Represents the "absoluteURI" element in the RFC 3261 grammar.
Represents an Identity header from RFC8824.
Represents a numeric-with-comment header field value.
Represents the "media-type" element in the RFC 3261 grammar.
Definition Mime.hxx:20
Represents the "name-addr" and the "addr-spec" elements in the RFC 3261 grammar.
Definition NameAddr.hxx:19
virtual ParameterTypes::Type getTypeNum() const =0
virtual const char * name() const =0
Represents the "token" element in the RFC 3261 grammar.
Represents the "q" parameter value of the RFC 3261 grammar.
Generically represents miscellaneous parameter data that is encoded using double quotes.
Represents the RAck header field value defined in the RFC 3262 grammar.
Represents the "via-received" element in the RFC 3261 grammar.
Represents the "Request-Line" element in the RFC 3261 grammar.
Represents the "response-port" element of the SIP grammar (as extended in RFC 3581).
Represents the "Status-Line" element in the RFC 3261 grammar.
Represents the "header-value" element in the RFC 3261 grammar (ie, an unknown header field value).
Generically represents a token whose value can be wrapped and encoded using double quotes.
Represents the "token" element in the RFC 3261 grammar.
Definition Token.hxx:18
Represents a numeric-with-comment header field value.
Generically represents unsigned 32-bit integer values conveyed by SIP parameters.
Represents a URI enclosed in angle brackets, used in Identity headers for RFC8224.
Represents the "SIP-URI" and "SIPS-URI" elements in the RFC 3261 grammar.
Definition Uri.hxx:22
Represents the "via-parm" element in the RFC 3261 grammar.
Definition Via.hxx:18
Represents the "warning-value" element in the RFC 3261 grammar.
dcm! – add UnusedChecking(_enum) below;
void list()
Definition userAdmin.cxx:66