1 <!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML//EN">
7 <title>-ORBListenEndpoints Details
</title>
8 <!-- Changed by: , 12-Jun-2002 -->
11 <body text =
"#000000" link=
"#000fff" vlink=
"#ff0f0f" bgcolor=
"#ffffff">
12 <h1><A HREF=
"Options.html#-ORBListenEndpoints">-ORBListenEndpoints
</A> Details
</h1>
15 <LI><A HREF=
"#Overview">Overview
</A></LI>
16 <LI><A HREF=
"#Options">Endpoint-Specific Options
</A></LI>
17 <LI><A HREF=
"#IIOP">IIOP Endpoints
</A></LI>
18 <LI><A HREF=
"#SHMIOP">SHMIOP Endpoints
</A></LI>
19 <LI><A HREF=
"#UIOP">UIOP Endpoints
</A></LI>
20 <LI><A HREF=
"#DIOP">DIOP Endpoints
</A></LI>
21 <LI><A HREF=
"#SSLIOP">SSLIOP Endpoints
</A></LI>
25 <P><h2><A NAME=
"Overview">Overview
</A></h2>
26 Tells the ORB to listen for requests on the interface specified
27 by
<I><EM>endpoint
</EM></I>. Endpoints are specified using a
28 URL style format. An endpoint has the form:
30 protocol://V.v@addr1,...,W.w@addrN
32 where
<CODE>V.v
</CODE> and
<CODE>W.w
</CODE> are optional protocol
33 versions for each address. An example of an IIOP endpoint is:
35 iiop://
<I><EM>hostname
</EM></I>:
<I><EM>port
</EM></I>
37 Sets of endpoints may be specified using multiple
38 <CODE>-ORBListenEndpoints
</CODE> options or by delimiting endpoints with
39 a semi-colon (;). For example:
41 -ORBListenEndpoints iiop://localhost:
9999 -ORBListenEndpoints uiop:///tmp/mylocalsock -ORBListenEndpoints shmiop://
10002
45 -ORBListenEndpoints 'iiop://localhost:
9999;uiop:///tmp/mylocalsock;shmiop://
10002'
47 Notice the single quotes (') in the latter option specification.
48 Single quotes are needed to prevent the shell from interpreting
49 text after the semi-colon as another command to run.
51 If an endpoint is specified without an
<CODE>addr
</CODE> such as
54 -ORBListenEndpoints uiop:// -ORBListenEndpoints shmiop://
56 then a default endpoint will be created for the specified protocol.
58 This is a server side option.
62 <h2><A NAME=
"Options">Endpoint-Specific Options
</A></h2>
64 The
<CODE>-ORBListenEndpoints
</CODE> options can accept
65 endpoint-specific options. Specifically, such options will only
66 apply to the endpoint for which they were specified.
68 An endpoint-specific option is used as follows:
71 -ORBListenEndpoints iiop://foo:
1234/option=value
75 Additional options can be specified by separating each option
76 with an ampersand '
<CODE>&</CODE>' as follows:
79 -ORBListenEndpoints 'iiop://foo:
1234/option1=value1&option2=value2'
83 Notice that the address and the endpoint-specific options are
84 separated by a forward slash '
<CODE>/
</CODE>' in this case,
85 i.e. for IIOP endpoints. This character may differ for other
86 types of pluggable protocol endpoints. For example, UIOP
87 endpoint-specific options are separated from the address by a
88 vertical bar '
<CODE>|
</CODE>'. Also note that when using more
89 than option, quotes should be used to prevent the shell from
90 interpreting the ampersand '
<CODE>&</CODE>' as a command to
91 tell the shell to backgroup a job.
95 <h2><A NAME=
"IIOP">IIOP Endpoints
</A></h2>
96 TAO's IIOP pluggable protocol utilizes TCP/IP as its underlying
99 <h3>IIOP Endpoint Overview
</h3>
101 IIOP endpoints in TAO have the form:
105 -ORBListenEndpoints iiop://V.v@hostname1:port1,...,W.w@hostname2:port2
109 Where
"<CODE>V.v</CODE>" and
"<CODE>W.w</CODE>" are the IIOP
110 protocol versions associated with the given address
111 (hostname:port pair). Currently supported versions are
112 <CODE>1.0</CODE>,
<CODE>1.1</CODE>, and
<CODE>1.2</CODE>.
115 Options are separated from the addresses by a forward slash
116 '
<CODE>/
</CODE>'. For instance, if an IIOP endpoint should have
117 a property foobar of
50 associated with it, then the following
118 endpoint specification could be used
122 -ORBListenEndpoints iiop://hostname:port/foobar=
50
126 <h3>IIOP Address Format
</h3>
128 IIOP addresses are comprised of a hostname (or an IP address)
129 and a TCP port the server should listen on. The hostname is
130 used to select which network interface to set up the endpoint
131 on. It is
<STRONG>not
</STRONG> used to set the hostname that
132 goes into the generated IOR. This is especially useful if the
133 endpoint should be setup on a specific network interface other
134 than the default network interface.
136 Suppose a host has the following network interfaces:
138 <LI>eth0: foo1.bar.baz
<FONT COLOR=RED
>(DEFAULT)
</FONT></LI>
139 <LI>eth1: foo2.bar.baz
</LI>
142 To set up an endpoint on the second network interface
"eth1,"
143 the following endpoint specification could be used:
147 -ORBListenEndpoints iiop://foo2
154 -ORBListenEndpoints iiop://foo2.bar.baz
158 TAO will attempt to ensure that the fully qualified domain name is
161 In the above example, an available port will be chosen by TAO
162 (actually the operating system kernel), which will then be
165 To set up an endpoint on a specific port, simply use an endpoint
170 -ORBListenEndpoints iiop://foo2:
1234
174 where
<CODE>1234</CODE> is the TCP port the endpoint will be
175 opened on. In this case, an endpoint will be opened on the
176 network interface associated with the hostname
<CODE>foo2
</CODE>
177 on port
<CODE>1234</CODE>.
179 Port
<I>names
</I> are also accepted. For example, suppose a
180 UNIX installation has a service called
"my_protocol" associated
181 with port
1234 in the service database in
182 <CODE>/etc/services
</CODE>, then the following would cause an
183 endpoint to be opened on the port associated with that service:
187 -ORBListenEndpoints iiop://foo2:my_protocol
191 Port numbers range from
<CODE>0</CODE> (causes port to be chosen
192 by operating system) to
<CODE>65355</CODE>. Port numbers less
193 than
<CODE>1024</CODE> on UNIX systems are considered
194 privileged, and require super-user privileges to access them.
195 Also be aware that some ports may already be in use by other
198 Suppose an endpoint should be created on each network
199 interface. To do so, simply omit the address from the endpoint
200 specification as follows:
204 -ORBListenEndpoints iiop://
208 In this case, an endpoint will be set up on each network
209 interface detected by TAO. The port for each opened endpoint
210 will be chosen automatically. The chosen port will be the same
211 for all endpoints. Each endpoint will be represented in
212 generated IOR as a separate profile.
214 Note that network interface detection only work on platforms
215 that support this feature. If network interface detection isn't
216 supported, then the default network interface will be chosen.
218 Now suppose that an endpoint should be created on each detected
219 network interface, but with a specific port. This can be
220 achieved by using an endpoint specification of the form:
224 -ORBListenEndpoints iiop://:
1234
228 This will create endpoints on each detected network interface,
229 each with the TCP port
<CODE>1234</CODE>. Notice that there is
230 a colon '
<CODE>:
</CODE>' preceeding the port number
231 <CODE>1234</CODE>. That colon is necessary to make TAO
232 interpret
<CODE>1234</CODE> as a port. Without the colon, TAO
233 would interpret
<CODE>1234</CODE> as a hostname associated with
234 a given network interface.
238 The hostname part of an endpoint can also be specified as a literal
239 IP address in 'dotted decimal address' form for IPv4 addresses:
243 -ORBListenEndpoints iiop://
192.168.10.24:
1234
247 For IPv6 addresses a special form is required to specify decimal IP
248 addresses since the decimal separator for IPv6 addresses is identical
249 to the separator used for port numbers; i.e. a colon (':').
250 To be able to distinguish an endpoint specification for host
01ef::
1
251 and port
123 and one for host
01ef::
1:
123 and no port number IPv6
252 decimal addresses need to enclosed by square brackets ('[' and ']'):
256 -ORBListenEndpoints iiop://[
01ef::
1]:
123
257 -ORBListenEndpoints iiop://[
01ef::
1:
123]
262 Since IPv6 endpoint are supported only for GIOP/IIOP versions
>=
1.2
263 it is
<FONT color='RED'
>illegal
</FONT> to combine version numbers
264 < 1.2 and IPv6 decimal addresses:
268 -ORBListenEndpoints iiop://
1.1@[
01ef::
1]:
123 <B><FONT color='RED'
>--> ILLEGAL
</FONT></B>
272 <h3>IIOP Endpoint-Specific Options
</h3>
274 TAO supports the following endpoint-specific options that apply only
277 <TABLE BORDER=
"2" CELLSPACING=
"2" CELLPADDING=
"0">
280 <TH>Availability
</TH>
285 <CODE>portspan
</CODE>
288 <CODE>TAO
1.1.15</CODE>
291 The
<CODE>portspan
</CODE> option specifies that an IIOP endpoint
292 should be opened on the first available port within a
293 specified span of port numbers, beginning with a specified
294 initial port. This option is useful when one or more servers
295 may be restricted to using ports within a given range. The
296 intention is that the behavior should be similar to using
297 ephemeral ports except within a restricted user-defined
300 The format for
<CODE>ORBListenEndpoints
</CODE> with the
301 <CODE>portspan
</CODE> option is:
303 <CODE>-ORBListenEndpoints iiop://[
</CODE><I>hostname
</I><CODE>]:
</CODE><I
304 >initialPort
</I><CODE>/portspan=
</CODE><I>span
</I>
306 where
<I>initialPort
</I> is the initial port number in the
307 range of allowable ports, and
<I>span
</I> is an integer
308 value indicating the size of the span of allowable ports.
309 Valid values for
<I>initialPort
</I> include any valid port
310 number. Valid values for
<I>span
</I> are in the
311 range
<CODE>1</CODE> to
<CODE>65535</CODE>. The
312 <I>hostname
</I> (in
<CODE>[ ]
</CODE>)is optional.
314 The server's ORB will attempt to create a listening endpoint
315 beginning with the initial port. If that fails, it will try
316 the next port in the range. It will continue to try each
317 port in the range until it
318 is able to successfully open one for listening or until it has exhausted the range
319 <CODE>[initialPort:initialPort+span-
1]
</CODE> at which point it fails with a
<CODE>CORBA::BAD_PARAM
</CODE> system exception.
324 <CODE>hostname_in_ior
</CODE>
327 <CODE>TAO
1.2.4</CODE>
330 The
<CODE>hostname_in_ior
</CODE> option allows one to
331 specify the hostname that is inserted into the generated
332 IOR. This option overrides the default (local) hostnames
333 that TAO normally inserts. This can be useful in
334 environments where the hostname in use is one whose IP
335 address changes dynamically.
337 The format for
<CODE>ORBListenEndpoints
</CODE> with the
338 <CODE>hostname_in_ior
</CODE> option is:
340 <CODE>-ORBListenEndpoints iiop://[
</CODE><I>local_hostname
</I><CODE>]:
</CODE><I
341 >port
</I><CODE>/hostname_in_ior=
</CODE><I>overridden_hostname
</I>
343 where
<I>local_hostname
</I> and
<I>port
</I> are specified
344 as normal, and
<I>overridden_hostname
</I> is the hostname
345 that should be put into generated IORs.
350 <CODE>reuse_addr
</CODE>
353 <CODE>TAO
1.4.8</CODE>
356 Available in IIOP & SSLIOP the
<CODE>reuse_addr
</CODE> option allows one to
357 set the SO_REUSEADDR socket option on an endpoint. Doing so bypasses
358 the TCP TIME_WAIT and can be used to open an endpoint
359 on a port still in TIME_WAIT state. Use caution using this option. Its not
360 recommended for the general use-case. Setting
361 SO_REUSEADDR has been observed to cause unexpected side-effects on some
362 platforms (e.g. Solaris
5.7 x86 allows programs run as same or different
363 users to bind to the same port when SO_REUSEADDR is set by all users).
365 The format for
<CODE>ORBListenEndpoints
</CODE> with the
366 <CODE>reuse_addr
</CODE> option is:
368 <CODE>-ORBListenEndpoints iiop://[
</CODE><I>local_hostname
</I><CODE>]:
</CODE><I
369 >port
</I><CODE>/reuse_addr=[
0|
1]
</CODE>
376 <h3>IIOP Endpoint Examples
</h3>
378 Here are some additional examples of IIOP endpoints:
380 <LI><CODE>-ORBListenEndpoints iiop://
1.0@foo1:
0</CODE>
381 <LI><CODE>-ORBListenEndpoints iiop://
1.0@foo:
0,
1.1@bar,baz:
3456</CODE>
382 <LI><CODE>-ORBListenEndpoints iiop://
1.0@foo:
0,
1.1@bar,baz:
3456/foobar=
300</CODE></LI>
383 <LI><CODE>-ORBListenEndpoints iiop:///foobar=
2</CODE> <FONT COLOR=RED
>(notice three slashes
"<CODE>///</CODE>")
</FONT>
384 <LI><CODE>-ORBListenEndpoints iiop://:
2020/foobar=
12345</CODE>
385 <LI><CODE>-ORBListenEndpoints iiop://
1.1@
</CODE>
386 <LI><CODE>-ORBListenEndpoints iiop://
1.1@:
1234</CODE>
387 <LI><CODE>-ORBListenEndpoints iiop://
1.1@,
1.0@:
1234,
1.1@
</CODE>
388 <LI><CODE>-ORBListenEndpoints iiop://
1.1@foo:
2020/portspan=
30</CODE>
389 <LI><CODE>-ORBListenEndpoints iiop://foo:
2020 -ORBListenEndpoints iiop://foo:
10020 </CODE> </CODE>
395 <h2><A NAME=
"SHMIOP">SHMIOP Endpoints
</A></h2>
396 TAO's SHMIOP pluggable protocol utilizes shared memory as its
397 underlying transport mechanism.
399 <h3>SHMIOP Endpoint Overview
</h3>
401 SHMIOP endpoints in TAO have the similar form to IIOP endpoints:
405 -ORBListenEndpoints shmiop://V.v@port1,...,W.w@port2
409 Where
"<CODE>V.v</CODE>" and
"<CODE>W.w</CODE>" are the SHMIOP
410 protocol versions associated with the given address
411 (port). Currently supported versions are
<CODE>1.0</CODE>,
412 <CODE>1.1</CODE>, and
<CODE>1.2</CODE>.
414 <h3>SHMIOP Address Format
</h3>
416 SHMIOP addresses are comprised of a port number that the server
419 Port numbers range from
<CODE>0</CODE> (causes port to be chosen
420 by operating system) to
<CODE>65335</CODE>. Port numbers less
421 than
<CODE>1024</CODE> on UNIX systems are considered
422 privileged, and require super-user privileges to access them.
423 Also be aware that some ports may already be in use by other
426 To have TAO automatically choose an address for a given SHMIOP
427 endpoint, simply omit the address from the endpoint
428 specification as follows:
432 -ORBListenEndpoints shmiop://
436 In this case, an SHMIOP endpoint will be set up on a port chosen
440 <h3>SHMIOP Endpoint Examples
</h3>
442 Here are some additional examples of SHMIOP endoints:
444 <LI><CODE>-ORBListenEndpoints shmiop://
1.0@
0</CODE>
445 <LI><CODE>-ORBListenEndpoints shmiop://
1.0@
0,
3456</CODE>
446 <LI><CODE>-ORBListenEndpoints shmiop://
1.0@
0,
3456/foobar=
300</CODE></LI>
447 <LI><CODE>-ORBListenEndpoints shmiop:///foobar=
2</CODE> <FONT COLOR=RED
>(notice three slashes
"<CODE>///</CODE>")
</FONT>
448 <LI><CODE>-ORBListenEndpoints shmiop://
2020/foobar=
12345</CODE>
449 <LI><CODE>-ORBListenEndpoints shmiop://
1.1@
</CODE>
450 <LI><CODE>-ORBListenEndpoints shmiop://
1.1@
1234</CODE>
451 <LI><CODE>-ORBListenEndpoints shmiop://
1.1@,
1.0@
1234,
1.1@
</CODE>
454 You
<font color=
"red">must specify the hostname
</font>, however,
455 when using SHMIOP with
<a href=
"INS.html">Interoperable Naming
456 Service
</a> as you would with IIOP. This is because SHMIOP uses
457 the hostname to determine the validity of an endpoint. That is,
458 it will not try to connect to a remote SHMIOP endpoint locally.
463 -ORBInitRef MyService=corbaloc:shmiop:
1.1@hostname:port/service_name
470 <h2><A NAME=
"UIOP">UIOP Endpoints
</A></h2>
471 TAO's UIOP pluggable protocol utilizes local IPC (aka UNIX domain
472 sockets) as its underlying transport mechanism.
474 <h3>UIOP Endpoint Overview
</h3>
476 UIOP endpoints in TAO have the form:
480 -ORBListenEndpoints uiop://V.v@rendezvous_point1,...,W.w@rendezvous_point2
484 Where
"<CODE>V.v</CODE>" and
"<CODE>W.w</CODE>" are the UIOP
485 protocol versions associated with the given rendezvous point.
486 Currently supported versions are
<CODE>1.0</CODE> and
490 Options are separated from the addresses by a vertical bar
491 '
<CODE>|
</CODE>'. For instance, if an UIOP endpoint should have
492 a property foobar of
50 associated with it, then the following
493 endpoint specification could be used
497 -ORBListenEndpoints 'uiop://
1.0@/tmp/my_rendezvous_point|foobar=
50'
501 Notice that the endpoint is quoted to prevent the shell from
502 interpreting the vertical bar '
<CODE>|
</CODE>' as the shell
505 <h3>UIOP Address Format
</h3>
507 UIOP addresses are comprised of a rendezvous point the server
508 should listen on. The rendezvous point is generally the
509 <I>full
</I> path to the desired UNIX domain socket filename.
510 Relative paths can be used, their use is discourages. The
511 maximum length of the rendezvous point is
108 characters, as
512 dictated by the POSIX
.1g specification for local IPC rendezvous
513 points. TAO will truncate any rendezvous point name longer than
516 An UIOP endpoint with a rendezvous point with an
<I>absolute
</I>
521 -ORBListenEndpoints uiop:///tmp/foobar
524 In this example, the optional protocol version and
525 endpoint-specific options have been omitted. The rendezvous point
526 <CODE>/tmp/foobar
</CODE> will be created, in this case.
528 An UIOP endpoint with a rendezvous point with a
<I>relative
</I>
532 <CODE>-ORBListenEndpoints uiop://foobar
</CODE> <FONT COLOR=RED
>(DISCOURAGED)
</FONT>
535 Again, rendezvous points with relative paths are discouraged
536 since it is possible that other rendezvous points with the same
537 basename exist on a given system, giving rise to potential
540 To make TAO choose a rendezvous point automatically, simply omit
541 the rendezvous point from the endpoint specification as follows:
545 -ORBListenEndpoints uiop://
549 This will cause an endpoint to be setup in system temporary
550 directory. Rendezvous points chosen by TAO are prepended with
551 "<CODE>TAO</CODE>." TAO will always choose rendezvous points
555 <h3>UIOP Endpoint Examples
</h3>
557 Here are some additional examples of UIOP endoints:
559 <LI><CODE>-ORBListenEndpoints uiop://
1.0@/tmp/foo1
</CODE>
560 <LI><CODE>-ORBListenEndpoints uiop://
1.0@/tmp/foo,
1.1@/home/bar/baz
</CODE>
561 <LI><CODE>-ORBListenEndpoints 'uiop://
1.1@/tmp/bar|foobar=
300'
</CODE></LI>
562 <LI><CODE>-ORBListenEndpoints 'uiop://|foobar=
2'
</CODE>
563 <LI><CODE>-ORBListenEndpoints uiop://
1.1@
</CODE>
564 <LI><CODE>-ORBListenEndpoints uiop://
1.1@,
1.0@/tmp/foo,
1.1@
</CODE>
570 <h2><A NAME=
"DIOP">DIOP Endpoints
</A></h2>
571 TAO's DIOP pluggable protocol utilizes UDP sockets instead TCP
572 sockets (IIOP) as its underlying transport mechanism. This
573 protocol supports unreliable datagram communication, which has
575 HREF=
"../examples/PluggableUDP/DIOP/README">limitations
</A>.
577 <h3>DIOP Endpoint Overview
</h3>
579 Since DIOP endpoints in TAO have the same form as
580 <A HREF=
"#IIOP">IIOP
</A> endpoints, a detailed description is
583 We recommend explicitly setting port numbers for endpoints
584 since TAO does not support automatic selection of free endpoints for
585 UDP sockets. Instead, the ORB will try to use the same default port
586 number in every case.
589 <h3>DIOP Endpoint-Specific Options
</h3>
591 TAO supports the following endpoint-specific options that apply only
594 <TABLE BORDER=
"2" CELLSPACING=
"2" CELLPADDING=
"0">
597 <TH>Availability
</TH>
602 <CODE>portspan
</CODE>
605 <CODE>TAO
2.5.12</CODE>
608 The
<CODE>portspan
</CODE> option works identically to the
609 <A HREF=
"#IIOP">IIOP
</A> <CODE>portspan
</CODE> option documented above.
611 The format for
<CODE>ORBListenEndpoints
</CODE> with the
612 <CODE>portspan
</CODE> option is:
614 <CODE>-ORBListenEndpoints diop://[
</CODE><I>hostname
</I><CODE>]:
</CODE><I
615 >initialPort
</I><CODE>/portspan=
</CODE><I>span
</I>
622 <h3>DIOP Endpoint Examples
</h3>
624 Here are some additional examples of DIOP endoints:
626 <LI><CODE>-ORBListenEndpoints diop://
1.0@foo1:
2345</CODE>
627 <LI><CODE>-ORBListenEndpoints diop://
1.1@:
1234</CODE>
628 <LI><CODE>-ORBListenEndpoints diop://
1.1@foo:
2020/portspan=
30</CODE>
633 <h2><A NAME=
"SSLIOP">SSLIOP Endpoints
</A></h2>
634 TAO's SSLIOP pluggable protocol facilitates CORBA request
635 invocation over TLS (formerly known as SSL), and is a drop-in
636 replacement for the
<A HREF=
"#IIOP">IIOP
</A> pluggable protocol.
638 The SSLIOP pluggable protocol will actually create two
639 endpoints: one which is meant to accept plain IIOP requests, and
640 another meant to accept SSLIOP requests. As security measure,
641 IIOP requests will be rejected by default unless the server is
642 configured to accept them (See the
643 <A HREF=
"Security/SSLIOP-USAGE.html">SSLIOP documentation
</A> for
646 <h3>SSLIOP Endpoint Format
</h3>
648 SSLIOP endpoints basically have the same format as
649 <A HREF=
"#IIOP">IIOP
</A> endpoints. The only difference between
650 the two is that SSLIOP endpoints accept an additional option
651 that allows one to select the port which will accept TLS
652 requests. To make a server open a SSLIOP endpoint on a specific
653 port use the
<CODE>ssl_port
</CODE> endpoint option:
656 <LI><CODE>-ORBListenEndpoints iiop://foo:
1234/ssl_port=
1235</CODE>
659 In this case, an
<A HREF=
"#IIOP">IIOP
</A> endpoint would be opened
660 on port
<CODE>1234</CODE> and a SSLIOP endpoint on port
661 <CODE>1235</CODE>. If no
<CODE>ssl_port
</CODE> option is
662 supplied, a port will automatically be chosen in the same way a
663 port is automatically chosen for an
<A HREF=
"#IIOP">IIOP
</A>
667 Note that the protocol label in the above example is
668 <CODE>iiop
</CODE>,
<EM>not
</EM> <code>ssliop
</code>.
669 Regardless, a SSLIOP endpoint will be opened if the SSLIOP
670 pluggable protocol was loaded. Furthermore, the
671 <CODE>ssl_port
</CODE> endpoint option is only valid if the
672 SSLIOP pluggable protocol is used.
675 <address><a href=
"mailto:ossama@dre.vanderbilt.edu">Ossama Othman
</a></address>