1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21/*
22 * Copyright (c) 2001 by Sun Microsystems, Inc.
23 * All rights reserved.
24 *
25 */
26
27// Defaults.java : Defaults for SLP Locator, Advertiser and slpd.
28// Author:   Erik Guttman
29//
30
31package com.sun.slp;
32
33import java.util.*;
34import java.net.*;
35
36/**
37 * This class gathers all constants used in the package into one place.
38 *
39 * @author James Kempf
40 */
41
42class Defaults {
43
44    // Default header class name for server.
45
46    static final String DEFAULT_SERVER_HEADER_CLASS =
47	"com.sun.slp.SLPServerHeaderV2";
48
49    // Default DA table implementation.
50
51    static final String SUN_DATABLE = "com.sun.slp.SunDATable";
52
53    // Character set.
54
55    static final String UTF8 = "UTF8";
56
57    // Service prefix.
58
59    final static String SERVICE_PREFIX = "service";
60
61    // Restricted type for DA table information.
62
63    static final ServiceType SUN_DA_SERVICE_TYPE =
64	new ServiceType("service:directory-agent.sun");
65
66    // Restricted type for SA table information.
67
68    static final ServiceType SUN_SA_SERVICE_TYPE =
69	new ServiceType("service:service-agent.sun");
70
71    // Directory agent URL type.
72
73    static final ServiceType DA_SERVICE_TYPE =
74	new ServiceType("service:directory-agent");
75
76    // Service agent URL type.
77
78    static final ServiceType SA_SERVICE_TYPE =
79	new ServiceType("service:service-agent");
80
81    // Service type attribute tag.
82
83    static final String SERVICE_TYPE_ATTR_ID = "service-type";
84
85    // Minimum refresh interval attribute tag.
86
87    static final String MIN_REFRESH_INTERVAL_ATTR_ID = "min-refresh-interval";
88
89    // These constants are involved in refreshing URLs or aging them out.
90
91    final static long lMaxSleepTime = 64800000L;  // 18 hrs in milliseconds
92    final static float fRefreshGranularity = (float)0.1;
93
94    // Special naming authority names.
95
96    protected static final String ALL_AUTHORITIES = "*";
97
98    // Default scope name.
99
100    static final String DEFAULT_SCOPE = "default";
101
102    // Default DA attributes.
103
104    static final Vector defaultDAAttributes = new Vector();
105
106    // Default SA attributes.
107
108    static final Vector defaultSAAttributes = new Vector();
109
110    // DA attribute names.
111
112    static final String minDALifetime = "min-lifetime";
113    static final String maxDALifetime = "max-lifetime";
114
115    // Loopback address and name.
116
117    static final String LOOPBACK_ADDRESS = "127.0.0.1";
118    static final String LOOPBACK_NAME = "localhost";
119
120    // Solaris default config file
121    static final String SOLARIS_CONF = "file:/etc/inet/slp.conf";
122
123    static final int         version = 2;
124    static final int	   iSocketQueueLength = 10;
125    static final int         iMulticastRadius = 255;
126    static final int         iHeartbeat = 10800;
127    static final int	   iActiveDiscoveryInterval = 900;
128    static final int	   iActiveDiscoveryGranularity = 900;
129    static final int	   iRandomWaitBound = 1000;
130    static final int         iMulticastMaxWait = 15000;
131    static final int         iMaximumResults = Integer.MAX_VALUE;
132    static final Locale      locale = new Locale("en", "");
133    static final int         iMTU = 1400;
134    static final int         iReadMaxMTU = 8192;
135    static final int         iSLPPort = 427;
136    static final String      sGeneralSLPMCAddress = "239.255.255.253";
137    static final String      sBroadcast           = "255.255.255.255";
138    static final int         iTCPTimeout          = 20000;
139    static final int[]       a_iDatagramTimeout = {1000, 2000, 3000};
140    static final int[]       a_iConvergeTimeout =
141					{3000, 3000, 3000, 3000, 3000};
142    static final int[]	   a_iDADiscoveryTimeout =
143					{2000, 2000, 2000, 2000, 3000, 4000};
144
145    static Vector restrictedTypes;
146
147    static {
148
149	InetAddress iaLocal = null;
150
151	// Get local host. Note that we just use this for the scope
152	//  name, so it doesn't matter if that interface isn't
153	//  taking any requests.
154
155	try {
156	    iaLocal =  InetAddress.getLocalHost();
157
158	}  catch (UnknownHostException ex) {
159	    Assert.slpassert(false,
160			  "resolve_failed",
161			  new Object[] {"localhost"});
162	}
163
164	// Normalize the hostname into just the nodename (as
165	//  opposed to the fully-qualified host name).
166	String localHostName = iaLocal.getHostName();
167	int dot = localHostName.indexOf('.');
168	if (dot != -1) {
169	    localHostName = localHostName.substring(0, dot);
170	}
171
172	// Set default DA table and SA only scopes. On Solaris,
173	//  the SA only scopes consist of the local machine
174	//  name, and the default DA table is SolarisDATable.
175	//  If this were C, there would be an #ifdef SOLARIS
176	//  around this code.
177
178	Properties props = System.getProperties();
179	props.put(DATable.SA_ONLY_SCOPES_PROP, localHostName);
180	props.put(DATable.DA_TABLE_CLASS_PROP, SUN_DATABLE);
181	System.setProperties(props);
182
183	// Set up the vector of restricted types. Restricted types
184	//  are only allowed to be added or deleted through the
185	//  slpd process. They also have no authentication information,
186	//  even if the network is authenticated. This is because
187	//  slpd is running as root and so unless root is compromised
188	//  the information can be trusted.
189
190	restrictedTypes = new Vector();
191	restrictedTypes.addElement(SUN_DA_SERVICE_TYPE);
192
193    }
194
195}
196