reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
ParameterTypeEnums.hxx
Go to the documentation of this file.
1#if !defined(RESIP_PARAMETERTYPEENUMS_HXX)
2#define RESIP_PARAMETERTYPEENUMS_HXX
3
4#include "rutil/Data.hxx"
5
13#define defineParam(_enum, _name, _type, _rfc) _enum
18#define UNUSED_defineParam(_enum, _name, _type, _rfc) SAVE##_enum, _enum = UNKNOWN, RESET##enum = SAVE##_enum-1
19
20namespace resip
21{
22
23class Parameter;
24class ParseBuffer;
25class PoolBase;
26
39{
40
41 public:
42 // !dlb! until automated, must ensure that this set is consistent with
43 // gperf in ParameterTypes.cxx, ParameterTypes.hxx, Parameters.gperf
44 // NOTE: !!Parameters.gperf must have lowercase parameters!!
45 // Also needs to be in ParserCategory.hxx/cxx
46 // PLEASE compile and run testParserCategories after changing this file.
47 enum Type
48 {
49 UNKNOWN = -1,
50 defineParam(data, "data", ExistsParameter, "RFC 3840"),
51 defineParam(control, "control", ExistsParameter, "RFC 3840"),
52 defineParam(mobility, "mobility", QuotedDataParameter, "RFC 3840"), // mobile|fixed
53 defineParam(description, "description", QuotedDataParameter, "RFC 3840"), // <> quoted
54 defineParam(events, "events", QuotedDataParameter, "RFC 3840"), // list
55 defineParam(priority, "priority", QuotedDataParameter, "RFC 3840"), // non-urgent|normal|urgent|emergency
56 defineParam(methods, "methods", QuotedDataParameter, "RFC 3840"), // list
57 defineParam(schemes, "schemes", QuotedDataParameter, "RFC 3840"), // list
58 defineParam(application, "application", ExistsParameter, "RFC 3840"),
59 defineParam(video, "video", ExistsParameter, "RFC 3840"),
60 defineParam(language, "language", QuotedDataParameter, "RFC 3840"), // list
61 defineParam(type, "type", QuotedDataParameter, "RFC 3840"), // list
62 defineParam(isFocus, "isfocus", ExistsParameter, "RFC 3840"),
63 defineParam(actor, "actor", QuotedDataParameter, "RFC 3840"), // principal|msg-taker|attendant|information
64 defineParam(text, "text", ExistsOrDataParameter, "RFC 3326/3840"), // using ExistsOrDataParameter so this parameter is compatible with both RFC3840 and RFC3326
65 defineParam(cause, "cause", UInt32Parameter, "RFC3326"),
66 defineParam(extensions, "extensions", QuotedDataParameter, "RFC 3840"), //list
67
68 defineParam(Instance, "+sip.instance", QuotedDataParameter, "RFC 5626"), // <> quoted
69 defineParam(regid, "reg-id", UInt32Parameter, "RFC 5626"),
70 defineParam(ob,"ob",ExistsParameter, "RFC 5626"),
71
72 defineParam(pubGruu, "pub-gruu", QuotedDataParameter, "RFC 5627"),
73 defineParam(tempGruu, "temp-gruu", QuotedDataParameter, "RFC 5627"),
74 defineParam(gr, "gr", ExistsOrDataParameter, "RFC 5627"),
75
76 defineParam(accessType, "access-type", DataParameter, "RFC 2046"),
77 defineParam(algorithm, "algorithm", DataParameter, "RFC ????"),
78 defineParam(boundary, "boundary", DataParameter, "RFC 2046"),
79 defineParam(branch, "branch", BranchParameter, "RFC ????"),
80 defineParam(charset, "charset", DataParameter, "RFC 2045"),
81 defineParam(cnonce, "cnonce", QuotedDataParameter, "RFC ????"),
82 defineParam(comp, "comp", DataParameter, "RFC ????"),
83 defineParam(dAlg, "d-alg", DataParameter, "RFC 3329"),
84 defineParam(dQop, "d-qop", DataParameter, "RFC ????"),
85 defineParam(dVer, "d-ver", QuotedDataParameter, "RFC ????"),
86 defineParam(directory, "directory", DataParameter, "RFC 2046"),
87 defineParam(domain, "domain", QuotedDataParameter, "RFC ????"),
88 defineParam(duration, "duration", UInt32Parameter, "RFC ????"),
89 defineParam(expiration, "expiration", QuotedDataParameter, "RFC 2046"),
90 defineParam(expires, "expires", UInt32Parameter, "RFC ????"),
91 defineParam(filename, "filename", DataParameter, "RFC ????"),
92 defineParam(fromTag, "from-tag", DataParameter, "RFC ????"),
93 defineParam(handling, "handling", DataParameter, "RFC ????"),
94 defineParam(id, "id", DataParameter, "RFC ????"),
95 defineParam(lr, "lr", ExistsParameter, "RFC ????"),
96 defineParam(maddr, "maddr", DataParameter, "RFC ????"),
97 defineParam(method, "method", DataParameter, "RFC ????"),
98 defineParam(micalg, "micalg", DataParameter, "RFC 1847"),
99 defineParam(mode, "mode", DataParameter, "RFC 2046"),
100 defineParam(name, "name", DataParameter, "RFC 2046"),
101 defineParam(nc, "nc", DataParameter, "RFC ????"),
102 defineParam(nonce, "nonce", QuotedDataParameter, "RFC ????"),
103 defineParam(opaque, "opaque", QuotedDataParameter, "RFC ????"),
104 defineParam(permission, "permission", DataParameter, "RFC 2046"),
105 defineParam(protocol, "protocol", QuotedDataParameter, "RFC 1847"),
106 defineParam(purpose, "purpose", DataParameter, "RFC 3261, draft-ietf-cuss-sip-uui-17"),
107 defineParam(q, "q", QValueParameter, "RFC 3261"),
108
109 defineParam(realm, "realm", QuotedDataParameter, "RFC ????"),
110 defineParam(reason, "reason", DataParameter, "RFC ????"),
111 defineParam(received, "received", ReceivedParameter, "RFC 3261"),
112 defineParam(require, "require", ExistsParameter, "RFC 5373"),
113 defineParam(response, "response", QuotedDataParameter, "RFC ????"),
114 defineParam(retryAfter, "retry-after", UInt32Parameter, "RFC ????"),
115 defineParam(rinstance, "rinstance", DataParameter, "Internal"),
116 defineParam(rport, "rport", RportParameter, "RFC 3851"),
117 defineParam(server, "server", DataParameter, "RFC 2046"),
118 defineParam(site, "site", DataParameter, "RFC 2046"),
119 defineParam(size, "size", DataParameter, "RFC 2046"),
120 defineParam(smimeType, "smime-type", DataParameter, "RFC 2633"),
121 defineParam(stale, "stale", DataParameter, "RFC ????"),
122 defineParam(tag, "tag", DataParameter, "RFC 3261"),
123 defineParam(toTag, "to-tag", DataParameter, "RFC ????"),
124 defineParam(transport, "transport", DataParameter, "RFC 3261"),
125 defineParam(ttl, "ttl", UInt32Parameter, "RFC 3261"),
126 defineParam(uri, "uri", QuotedDataParameter, "RFC ????"),
127 defineParam(user, "user", DataParameter, "RFC ????"),
128 defineParam(extension, "ext", DataParameter, "RFC ????"),
129 defineParam(username, "username", DataParameter, "RFC ????"),
130 defineParam(earlyOnly, "early-only", ExistsParameter, "RFC 3891"),
131 defineParam(refresher, "refresher", DataParameter, "RFC 4028"),
132
133 defineParam(profileType, "profile-type", DataParameter, "draft-ietf-sipping-config-framework"),
134 defineParam(vendor, "vendor", QuotedDataParameter, "draft-ietf-sipping-config-framework"),
135 defineParam(model, "model", QuotedDataParameter, "draft-ietf-sipping-config-framework"),
136 defineParam(version, "version", QuotedDataParameter, "draft-ietf-sipping-config-framework"),
137 defineParam(effectiveBy, "effective-by", UInt32Parameter, "draft-ietf-sipping-config-framework"),
138 defineParam(document, "document", DataParameter, "draft-ietf-sipping-config-framework"),
139 defineParam(appId, "app-id", DataParameter, "draft-ietf-sipping-config-framework"),
140 defineParam(networkUser, "network-user", DataParameter, "draft-ietf-sipping-config-framework"),
141
142 defineParam(url, "url", QuotedDataParameter, "draft-ietf-sip-content-indirect-mech-05"),
143
144 defineParam(sigcompId, "sigcomp-id", QuotedDataParameter, "draft-ietf-rohc-sigcomp-sip"),
145 defineParam(qop, "qop", DataParameter, "RFC 3261"),
146
147 defineParam(index, "index", DataParameter, "RFC 4244"),
148 defineParam(rc, "rc", DataParameter, "RFC 4244-bis"),
149 defineParam(mp, "mp", DataParameter, "RFC 4244-bis"),
150 defineParam(np, "np", DataParameter, "RFC 4244-bis"),
151
152 defineParam(utranCellId3gpp, "utran-cell-id-3gpp", DataParameter, "RFC 3455"), // P-Access-Network-Info
153 defineParam(cgi3gpp, "cgi-3gpp", DataParameter, "RFC 3455"), // P-Access-Network-Info
154 defineParam(ccf, "ccf", DataParameter, "RFC 3455"), // P-Charging-Function-Addresses
155 defineParam(ecf, "ecf", DataParameter, "RFC 3455"), // P-Charging-Function-Addresses
156 defineParam(icidValue, "icid-value", DataParameter, "RFC 3455"), // P-Charging-Vector
157 defineParam(icidGeneratedAt, "icid-generated-at", DataParameter, "RFC 3455"), // P-Charging-Vector
158 defineParam(origIoi, "orig-ioi", DataParameter, "RFC 3455"), // P-Charging-Vector
159 defineParam(termIoi, "term-ioi", DataParameter, "RFC 3455"), // P-Charging-Vector
160
161 defineParam(content, "content", DataParameter, "draft-ietf-cuss-sip-uui-17"), // User-to-User
162 defineParam(encoding, "encoding", DataParameter, "draft-ietf-cuss-sip-uui-17"), // User-to-User
163
164 defineParam(info, "info", UriParameter, "RFC 8224"),
165 defineParam(alg, "alg", DataParameter, "RFC 8224"),
166 defineParam(ppt, "ppt", DataParameter, "RFC 8224"),
167
168 defineParam(counter, "counter", UInt32Parameter, "RFC 5806"),
169 defineParam(limit, "limit", UInt32Parameter, "RFC 5806"),
170 defineParam(privacy, "privacy", DataParameter, "RFC 5806"),
171 defineParam(screen, "screen", DataParameter, "RFC 5806"),
172
173 defineParam(qopOptions, "qop", DataParameter, "RFC 3261"),
174 defineParam(addTransport, "addTransport", ExistsParameter, "Internal"),
175 defineParam(wsSrcIp, "ws-src-ip", DataParameter, ""),
176 defineParam(wsSrcPort, "ws-src-port", UInt32Parameter, ""),
177
179 };
180
184 static Type getType(const char* start, size_t length);
185
193 typedef Parameter* (*Factory)(ParameterTypes::Type, ParseBuffer&, const std::bitset<256>& terminators, PoolBase* pool);
194
200
206};
207
208}
209
210#undef defineParam
211#undef UNUSED_defineParam
212
213#endif
214
215/* ====================================================================
216 * The Vovida Software License, Version 1.0
217 *
218 * Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
219 * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
220 *
221 * Redistribution and use in source and binary forms, with or without
222 * modification, are permitted provided that the following conditions
223 * are met:
224 *
225 * 1. Redistributions of source code must retain the above copyright
226 * notice, this list of conditions and the following disclaimer.
227 *
228 * 2. Redistributions in binary form must reproduce the above copyright
229 * notice, this list of conditions and the following disclaimer in
230 * the documentation and/or other materials provided with the
231 * distribution.
232 *
233 * 3. The names "VOCAL", "Vovida Open Communication Application Library",
234 * and "Vovida Open Communication Application Library (VOCAL)" must
235 * not be used to endorse or promote products derived from this
236 * software without prior written permission. For written
237 * permission, please contact vocal@vovida.org.
238 *
239 * 4. Products derived from this software may not be called "VOCAL", nor
240 * may "VOCAL" appear in their name, without prior written
241 * permission of Vovida Networks, Inc.
242 *
243 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
244 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
245 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
246 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
247 * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
248 * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
249 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
250 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
251 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
252 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
253 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
254 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
255 * DAMAGE.
256 *
257 * ====================================================================
258 *
259 * This software consists of voluntary contributions made by Vovida
260 * Networks, Inc. and many individuals on behalf of Vovida Networks,
261 * Inc. For more information on Vovida Networks, Inc., please see
262 * <http://www.vovida.org/>.
263 *
264 */
Represents the "via-branch" parameter of the RFC 3261 grammar.
Generically represents miscellaneous parameter data.
An alternative to std::string, encapsulates an arbitrary buffer of bytes.
Definition Data.hxx:90
Represents various parameters that are indicated to be in effect merely by being present,...
This is one of the places where new parameter types must be defined.
Parameter *(* Factory)(ParameterTypes::Type, ParseBuffer &, const std::bitset< 256 > &terminators, PoolBase *pool)
static Type getType(const char *start, size_t length)
does a convert to enum from a pointer into the HFV raw buffer
static Factory ParameterFactories[MAX_PARAMETER]
static array of Factorys indexed by the 2nd element in defineParam(...)
static Data ParameterNames[MAX_PARAMETER]
static array of ParameterNames indexed by the 2nd element in defineParam(...)
Provides string-parsing functionality with protection from buffer overflow.
Represents the "q" parameter value of the RFC 3261 grammar.
Generically represents miscellaneous parameter data that is encoded using double quotes.
Represents the "via-received" element in the RFC 3261 grammar.
Represents the "response-port" element of the SIP grammar (as extended in RFC 3581).
Generically represents unsigned 32-bit integer values conveyed by SIP parameters.
Represents a URI enclosed in angle brackets, used in Identity headers for RFC8224.
dcm! – add UnusedChecking(_enum) below;