View Javadoc
1   /*
2     SLPConfigProperties.java
3   
4     (C) Copyright IBM Corp. 2006, 2009
5   
6     THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
7     ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
8     CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
9   
10    You can obtain a current copy of the Eclipse Public License from
11    http://www.opensource.org/licenses/eclipse-1.0.php
12  
13    @author : Alexander Wolf-Reber, IBM, a.wolf-reber@de.ibm.com
14   * 
15   * Change History
16   * Flag       Date        Prog         Description
17   *------------------------------------------------------------------------------- 
18   * 1535793    2006-09-19  lupusalex    Fix&Integrate CIM&SLP configuration classes
19   * 1911400    2008-03-10  blaschks-oss Source RPM file on SourceForge is broken
20   * 2003590    2008-06-30  blaschke-oss Change licensing from CPL to EPL
21   * 2524131    2009-01-21  raman_arora  Upgrade client to JDK 1.5 (Phase 1)
22   * 2763216    2009-04-14  blaschke-oss Code cleanup: visible spelling/grammar errors
23   * 2907527    2009-12-02  blaschke-oss Fix SLP properties issues
24   */
25  
26  package org.metricshub.wbem.sblim.slp;
27  
28  /*-
29   * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
30   * WBEM Java Client
31   * ჻჻჻჻჻჻
32   * Copyright 2023 - 2025 MetricsHub
33   * ჻჻჻჻჻჻
34   * Licensed under the Apache License, Version 2.0 (the "License");
35   * you may not use this file except in compliance with the License.
36   * You may obtain a copy of the License at
37   *
38   *      http://www.apache.org/licenses/LICENSE-2.0
39   *
40   * Unless required by applicable law or agreed to in writing, software
41   * distributed under the License is distributed on an "AS IS" BASIS,
42   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
43   * See the License for the specific language governing permissions and
44   * limitations under the License.
45   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
46   */
47  
48  /**
49   * The interface SLPConfigProperties holds string constants for the
50   * configuration properties of the SLP package. To set a property call
51   * <code>System.setProperty(name, value)</code>. Note that these properties have
52   * global VM scope.
53   *
54   */
55  public interface SLPConfigProperties {
56  	/**
57  	 * A URL string giving the location of the SLP config file. <br />
58  	 * <br />
59  	 * By default the SLP client looks for
60  	 * <ul>
61  	 * <li>file:sblim-slp-client2.properties</li>
62  	 * <li>file:%USER_HOME%/sblim-slp-client2.properties</li>
63  	 * <li>file:/etc/java/sblim-slp-client2.properties</li>
64  	 * <li>file:/etc/sblim-slp-client2.properties</li>
65  	 * </ul>
66  	 * The first file found will be used. The default search list is not applied
67  	 * if this property is set, even if the given URL does not exist.<br />
68  	 * <br />
69  	 * <i>SBLIM specific extension to RFC 2614</i>
70  	 */
71  	public static final String NET_SLP_CONFIG_URL = "net.slp.configURL";
72  
73  	/**
74  	 * A 16 bit positive integer giving the number of seconds the DA url
75  	 * lifetime should exceed the discovery interval.<br />
76  	 * <br />
77  	 * Default is 900 seconds (15 minutes).<br />
78  	 * <br />
79  	 * <i>SBLIM specific extension to RFC 2614</i>
80  	 */
81  	public static final String NET_SLP_DA_ACTIVE_DISCOVERY_GRANULARITY = "net.slp.DAActiveDiscoveryGranularity";
82  
83  	/**
84  	 * A 16 bit positive integer giving the number of seconds between DA active
85  	 * discovery queries.<br />
86  	 * <br />
87  	 * Default is 900 seconds (15 minutes).<br />
88  	 * <br />
89  	 * If the property is set to zero, active discovery is turned off. This is
90  	 * useful when the DAs available are explicitly restricted to those obtained
91  	 * from DHCP or the net.slp.DAAddresses property.
92  	 */
93  	public static final String NET_SLP_DA_ACTIVE_DISCOVERY_INTERVAL = "net.slp.DAActiveDiscoveryInterval";
94  
95  	/**
96  	 * A value-list of IP addresses or DNS resolvable host names giving the
97  	 * SLPv2 DAs to use for statically configured UAs and SAs. Ignored by DAs
98  	 * (unless the DA is also an SA server). <br />
99  	 * <br />
100 	 * Default is none.<br />
101 	 * <br />
102 	 * The following grammar describes the property:
103 	 * <p>
104 	 * <code>
105 	 * addr-list = addr / addr "," addr-list<br />
106 	 * addr = fqdn / hostnumber<br />
107 	 * fqdn = ALPHA / ALPHA *[ anum / "-" ] anum<br />
108 	 * anum = ALPHA / DIGIT<br />
109 	 * hostnumber = 1*3DIGIT 3("." 1*3DIGIT)<br />
110 	 * </code>
111 	 * </p>
112 	 * An example is:<br />
113 	 * <p>
114 	 * <code>
115 	 * sawah,mandi,sambal
116 	 * </code>
117 	 * </p>
118 	 * IP addresses can be used instead of host names in networks where DNS is
119 	 * not deployed, but network administrators are reminded that using IP
120 	 * addresses will complicate machine renumbering, since the SLP
121 	 * configuration property files in statically configured networks will have
122 	 * to be changed. Similarly, if host names are used, implementors must be
123 	 * careful that a name service is available before SLP starts, in other
124 	 * words, SLP cannot be used to find the name service.<br/>
125 	 */
126 	public static final String NET_SLP_DA_ADDRESSES = "net.slp.DAAddresses";
127 
128 	/**
129 	 * A comma-separated list of parenthesized attribute/value list pairs that
130 	 * the DA must advertise in DAAdverts. The property must be in the SLP
131 	 * attribute list wire format, including escapes for reserved characters.<br />
132 	 * <br />
133 	 * <i>Not evaluated by SBLIM SLP client</i>
134 	 */
135 	public static final String NET_SLP_DA_ATTRIBUTES = "net.slp.DAAttributes";
136 
137 	/**
138 	 * A value-list of 32 bit integers used as timeouts, in milliseconds, to
139 	 * implement the multicast convergence algorithm during active DA discovery.
140 	 * Each value specifies the time to wait before sending the next request, or
141 	 * until nothing new has been learned from two successive requests.<br />
142 	 * <br/>
143 	 * Default is: <code>200,200,200,200,300,400</code>.
144 	 */
145 	public static final String NET_SLP_DA_DISCOVERY_TIMEOUTS = "net.slp.DADiscoveryTimeouts";
146 
147 	/**
148 	 * A 32 bit integer giving the number of seconds for the DA heartbeat.
149 	 * Ignored if isDA is false. <br />
150 	 * <br />
151 	 * Default is 10800 seconds (3 hours). <br />
152 	 * <br />
153 	 * <i>Not evaluated by SBLIM SLP client</i>
154 	 */
155 	public static final String NET_SLP_DA_HEARTBEAT = "net.slp.DAHeartbeat";
156 
157 	/**
158 	 * A value-list of 32 bit integers used as timeouts, in milliseconds, to
159 	 * implement unicast datagram transmission to DAs. The nth value gives the
160 	 * time to block waiting for a reply on the nth try to contact the DA.<br />
161 	 * <br />
162 	 * Default is: <code>100,200,300</code>
163 	 */
164 	public static final String NET_SLP_DATAGRAM_TIMEOUTS = "net.slp.datagramTimeouts";
165 
166 	/**
167 	 * Value-list of strings giving the IP addresses of network interfaces on
168 	 * which the DA or SA should listen on port 427 for multicast, unicast UDP,
169 	 * and TCP messages.<br />
170 	 * <br />
171 	 * Default is empty, i.e. use the default network interface.<br />
172 	 * <br />
173 	 * The grammar for this property is:
174 	 * <p>
175 	 * <code>
176 	 * addr-list     =  hostnumber / hostnumber "," addr-list<br />
177 	 * hostnumber    =  1*3DIGIT 3("." 1*3DIGIT)
178 	 * </code>
179 	 * </p>
180 	 * An example is:
181 	 * <p>
182 	 * <code>195.42.42.42,195.42.142.1,195.42.120.1</code>
183 	 * </p>
184 	 * The example machine has three interfaces on which the DA should listen.
185 	 * Note that since this property only takes IP addresses, it will need to be
186 	 * changed if the network is renumbered.
187 	 */
188 	public static final String NET_SLP_INTERFACES = "net.slp.interfaces";
189 
190 	/**
191 	 * A boolean indicating if broadcast should be used instead of multicast.<br />
192 	 * <br />
193 	 * Default is <code>false</code>.
194 	 */
195 	public static final String NET_SLP_IS_BROADCAST_ONLY = "net.slp.isBroadcastOnly";
196 
197 	/**
198 	 * A boolean indicating if the SLP server is to act as a DA. If
199 	 * <code>false</code>, run as a SA.<br />
200 	 * <br />
201 	 * Default is <code>false</code>.
202 	 */
203 	public static final String NET_SLP_IS_DA = "net.slp.isDA";
204 
205 	/**
206 	 * A RFC 1766 Language Tag for the language locale. Setting this property
207 	 * causes the property value to become the default locale for SLP messages.
208 	 * This property is also used for SA and DA configuration.<br />
209 	 * <br />
210 	 * Default is <code>en</code>. <br />
211 	 * <br />
212 	 * <i>Not evaluated by SBLIM SLP client</i>
213 	 */
214 	public static final String NET_SLP_LOCALE = "net.slp.locale";
215 
216 	/**
217 	 * A 32 bit integer giving the maximum number of results to accumulate and
218 	 * return for a synchronous request before the timeout, or the maximum
219 	 * number of results to return through a callback if the request results are
220 	 * reported asynchronously.<br />
221 	 * Positive integers and -1 are legal values. If -1, indicates that all
222 	 * results should be returned. <br />
223 	 * <br />
224 	 * Default value is 2147483647 (2^31 - 1)<br />
225 	 * <i>SBLIM specific: RFC 2614 recommendation is -1.</i><br />
226 	 * <br />
227 	 * DAs and SAs always return all results that match the request. This
228 	 * configuration value applies only to UAs, that filter incoming results and
229 	 * only return as many values as net.slp.maxResults indicates.
230 	 */
231 	public static final String NET_SLP_MAX_RESULTS = "net.slp.maxResults";
232 
233 	/**
234 	 * A 16 bit integer giving the network packet MTU, in bytes. This is the
235 	 * maximum size of any datagram to send, but the implementation might
236 	 * receive a larger datagram. The maximum size includes IP, and UDP or TCP
237 	 * headers.<br />
238 	 * <br />
239 	 * Default is 1400.
240 	 */
241 	public static final String NET_SLP_MTU = "net.slp.MTU";
242 
243 	/**
244 	 * A 32 bit integer giving the maximum amount of time to perform multicast,
245 	 * in milliseconds.<br />
246 	 * <br />
247 	 * Default is 2000 ms.
248 	 */
249 	public static final String NET_SLP_MULTICAST_MAXIMUM_WAIT = "net.slp.multicastMaximumWait";
250 
251 	/**
252 	 * A value-list of 32 bit integers used as timeouts, in milliseconds, to
253 	 * implement the multicast convergence algorithm. Each value specifies the
254 	 * time to wait before sending the next request, or until nothing new has
255 	 * been learned from two successive requests.<br />
256 	 * <br />
257 	 * Default is: 200, 200, 200, 200, 300, 400<br />
258 	 * <i>SBLIM specific: RFC 2614 recommendation is
259 	 * 3000,3000,3000,3000,3000.</i><br />
260 	 * <br />
261 	 * In a fast network the aggressive values of 1000,1250,1500,2000,4000 allow
262 	 * better performance.<br />
263 	 * <br />
264 	 * Note that the net.slp.DADiscoveryTimeouts property must be used for
265 	 * active DA discovery.
266 	 */
267 	public static final String NET_SLP_MULTICAST_TIMEOUTS = "net.slp.multicastTimeouts";
268 
269 	/**
270 	 * A positive integer less than or equal to 255, giving the multicast TTL.<br />
271 	 * <br />
272 	 * Default is 255.
273 	 */
274 	public static final String NET_SLP_MULTICAST_TTL = "net.slp.multicastTTL";
275 
276 	/**
277 	 * A boolean indicating whether passive DA detection should be used.<br />
278 	 * <br />
279 	 * Default is true.<br />
280 	 * <br />
281 	 * <i>Not evaluated by SBLIM SLP client</i>
282 	 */
283 	public static final String NET_SLP_PASSIVE_DA_DETECTION = "net.slp.passiveDADetection";
284 
285 	/**
286 	 * A 16 bit integer giving the port used for listening.<br />
287 	 * <br />
288 	 * Default is 427.
289 	 */
290 	public static final String NET_SLP_PORT = "net.slp.port";
291 
292 	/**
293 	 * A boolean indicating whether IPv6 addresses should be used.<br />
294 	 * <br />
295 	 * Default is true.
296 	 */
297 	public static final String NET_SLP_USEIPV6 = "net.slp.useipv6";
298 
299 	/**
300 	 * A boolean indicating whether IPv4 addresses should be used.<br />
301 	 * <br />
302 	 * Default is true.
303 	 */
304 	public static final String NET_SLP_USEIPV4 = "net.slp.useipv4";
305 
306 	/**
307 	 * A 32 bit integer giving the maximum value for all random wait parameters,
308 	 * in milliseconds. <br />
309 	 * <br />
310 	 * Default is 1000 ms. <br />
311 	 * <br />
312 	 * <i>Not evaluated by SBLIM SLP client</i>
313 	 */
314 	public static final String NET_SLP_RANDOM_WAIT_BOUND = "net.slp.randomWaitBound";
315 
316 	/**
317 	 * A comma-separated list of parenthesized attribute/value list pairs that
318 	 * the SA must advertise in SAAdverts. The property must be in the SLP
319 	 * attribute list wire format, including escapes for reserved characters. <br />
320 	 * <br />
321 	 * <i>Not evaluated by SBLIM SLP client</i>
322 	 */
323 	public static final String NET_SLP_SA_ATTRIBUTES = "net.slp.SAAttributes";
324 
325 	/**
326 	 * A value-list of strings indicating the scopes that are only applied to
327 	 * SAs. In contradiction the "net.slp.useScopes" specifies the scope for UAs
328 	 * and SAs.<br />
329 	 * <br />
330 	 * <i>SBLIM specific extension to RFC 2614</i>
331 	 */
332 	public static final String NET_SLP_SAONLY_SCOPES = "net.slp.SAOnlyScopes";
333 
334 	/**
335 	 * A comma-separated list of parenthesized attribute/value list pairs that
336 	 * the SA must advertise in SAAdverts. The property must be in the SLP
337 	 * attribute list wire format, including escapes for reserved characters.<br />
338 	 * <br />
339 	 * <i>Not evaluated by SBLIM SLP client</i>
340 	 */
341 	public static final String NET_SLP_SECURITY_ENABLED = "net.slp.securityEnabled";
342 
343 	/**
344 	 * A string containing a URL pointing to a document containing serialized
345 	 * registrations that should be processed when the DA or SA server starts
346 	 * up.<br />
347 	 * <br />
348 	 * Default is none.<br />
349 	 * <br />
350 	 * <i>Not evaluated by SBLIM SLP client</i>
351 	 */
352 	public static final String NET_SLP_SERIALIZED_REG_URL = "net.slp.serializedRegUrl";
353 
354 	/**
355 	 * A 32 bit integer giving the server socket queue length for SAs/DAs.<br />
356 	 * <br />
357 	 * Default is 10.<br />
358 	 * <br />
359 	 * <i>SBLIM specific extension to RFC 2614</i>
360 	 *
361 	 */
362 	public static final String NET_SLP_SERVER_SOCKET_QUEUE_LENGTH = "net.slp.serverSocketQueueLength";
363 
364 	/**
365 	 * A 32 bit integer giving the TCP timeout in milliseconds.<br />
366 	 * <br />
367 	 * The default is 20000 ms. <br />
368 	 * <br />
369 	 * <i>SBLIM specific extension to RFC 2614</i>
370 	 *
371 	 */
372 	public static final String NET_SLP_TCPTIMEOUT = "net.slp.TCPTimeout";
373 
374 	/**
375 	 * A boolean controlling printing of messages about traffic with DAs. <br />
376 	 * <br />
377 	 * Default is <code>false</code>.<br />
378 	 * <br />
379 	 * <i>Not evaluated by SBLIM SLP client</i>
380 	 */
381 	public static final String NET_SLP_TRACE_DA_TRAFFIC = "net.slp.traceDATraffic";
382 
383 	/**
384 	 * A boolean controlling printing details when a SLP message is dropped for
385 	 * any reason. <br />
386 	 * <br />
387 	 * Default is <code>false</code>.<br />
388 	 * <br />
389 	 * <i>Not evaluated by SBLIM SLP client</i>
390 	 */
391 	public static final String NET_SLP_TRACE_DROP = "net.slp.traceDrop";
392 
393 	/**
394 	 * A boolean controlling printing of details on SLP messages. The fields in
395 	 * all incoming messages and outgoing replies are printed. <br />
396 	 * <br />
397 	 * Default is <code>false</code>.
398 	 */
399 	public static final String NET_SLP_TRACE_MSG = "net.slp.traceMsg";
400 
401 	/**
402 	 * A boolean controlling dumps of all registered services upon registration
403 	 * and deregistration. If true, the contents of the DA or SA server are
404 	 * dumped after a registration or deregistration occurs. <br />
405 	 * <br />
406 	 * Default is false.<br />
407 	 * <br />
408 	 * <i>Not evaluated by SBLIM SLP client</i>
409 	 */
410 	public static final String NET_SLP_TRACE_REG = "net.slp.traceReg";
411 
412 	/**
413 	 * A value-list of service type names. In the absence of any DAs, UAs
414 	 * perform SA discovery for finding scopes. These SA discovery requests may
415 	 * contain a request for service types as an attribute.<br />
416 	 * <br />
417 	 * The API implementation will use the service type names supplied by this
418 	 * property to discover only those SAs (and their scopes) which support the
419 	 * desired service type or types. For example, if net.slp.typeHint is set to
420 	 * "service:imap,service:pop3" then SA discovery requests will include the
421 	 * search filter:<br />
422 	 * <br />
423 	 * <code>(|(service-type=service:imap)(service-type=service:pop3))</code><br />
424 	 * <br />
425 	 *
426 	 * The API library can also use unicast to contact the discovered SAs for
427 	 * subsequent requests for these service types, to optimize network access.<br />
428 	 * <br />
429 	 * <i>Not evaluated by SBLIM SLP client</i>
430 	 */
431 	public static final String NET_SLP_TYPE_HINT = "net.slp.typeHint";
432 
433 	/**
434 	 * A value-list of strings indicating the only scopes a UA or SA is allowed
435 	 * to use when making requests or registering, or the scopes a DA must
436 	 * support.<br />
437 	 * If not present for the DA and SA, then in the absence of scope
438 	 * information from DHCP, the default scope "DEFAULT" is used. If not
439 	 * present for the UA, and there is no scope information available from
440 	 * DHCP, then the user scoping model is in force. <br />
441 	 * Active and passive DA discovery or SA discovery are used for scope
442 	 * discovery, and the scope "DEFAULT" is used if no other information is
443 	 * available. <br />
444 	 * If a DA or SA gets another scope in a request, a SCOPE_NOT_SUPPORTED
445 	 * error should be returned, unless the request was multicast, in which case
446 	 * it should be dropped. If a DA gets another scope in a registration, a
447 	 * SCOPE_NOT_SUPPORTED error must be returned.
448 	 */
449 	public static final String NET_SLP_USE_SCOPES = "net.slp.useScopes";
450 
451 	/**
452 	 * Trace level. Can be ALL, INFO, WARNING, ERROR, OFF<br />
453 	 * <br />
454 	 * <i>Not evaluated by SBLIM SLP client</i>
455 	 */
456 	public static final String NET_SLP_TRC_LEVEL = "net.slp.trc.level";
457 }