### Tags used in TAO

### Overview

The CORBA specification defines several tags, a.k.a. magic numbers, to distinguish between several otherwise opaque entities. For example, all profiles are transmitted as a CDR encapsulation (a sequence of octets), using a tag the type of the profile can be determined and the encapsulation can be properly interpreted.

To ensure that the tags uniquely indentify the entities in each namespace the OMG acts as an allocation authority, keeps a registry of the tags allocated so far and assigning the new tag values on demand. The process to request a tag is very simple, interested readers can consult this link for more details

We have reserved several tags for TAO, this page documents those tags and how they are used, some details are subject to change. We recommend that interested readers check the release notes

### List of TAGS

#### ORB Type ID

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54414f00 | "TAO\0x00" | IIOP profiles contain a component list. One of the elements of this list (the `IOP::TAG_ORB_TYPE`) contains a identifier for the ORB that created the profile.

#### IOR Profile IDs

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54414f00 | "TAO\0x00" | A TAO local IPC (aka Unix domain) profile.

The range `0x54414f01-0x54414f0f` (`"TAO\0x01"-"TAO\0x0f"`) is reserved for future use. Only for informational purposes we include the following list of potential uses:

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54414f01 | "TAO\0x01" | GIOP over ATM/AAL5
0x54414f02 | "TAO\0x02" | Shared memory transport
0x54414f03 | "TAO\0x03" | Message queue
0x54414f04 | "TAO\0x04" | UDP
0x54414f05 | "TAO\0x05" | IP multicast
0x54414f06 | "TAO\0x06" | Compact PCI bus
0x54414f07 | "TAO\0x07" | VME bus
0x54414f08 | "TAO\0x08" | NT named pipes
0x54414f09 | "TAO\0x09" | HTTP-NG
0x54414f0A | "TAO\0x0A" | Pipes (for collocated calls)

#### Service Context ID

The range `0x54414f00-0x54414f0f` (`"TAO\0x00"-"TAO\0x0f"`) is reserved for future use.

#### Component IDs

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54414f00 | "TAO\0x00" | Server side priority for the endpoint in this profile. The component is encoded a two shorts, the minimum and maximum priorities (in that order). The values correspond to the CORBA priorities defined in the real-time CORBA spec. The client will select the endpoint that matches its priorities and policies.

The range `0x54414f01-0x54414f0f` (`"TAO\0x00"-"TAO\0x0f"`) is reserved for future use.

#### Vendor Minor Code ID (VMCID)

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54410000 | "TA\x00x00" | System exceptions thrown by TAO have their higher 20 bits set to `0x54410`, the other 12 bits are used to describe more precisely the cause of the exception. The lower 4 bits encode the errno that caused the exception, the 8 intermediate bits encode the location where the exception was raised.

The following list describes the current use of errno and location encodings:

Errno Value | Description
--- | ---
0x00 | The error was not caused by a failed system call
0x01 | ETIMEDTOUT
0x02 | ENFILE
0x03 | EMFILE
0x04 | EPIPE
0x05 | ECONNREFUSED
0x06 | ENOENT
0x07 | EBADF
0x08 | ENOSYS
0x09 | EPERM
0x0A | EAFNOSUPPORT

Please consult the documentation for your OS for more details about the errno meanings

Location encoding | Description
--- | ---
0x01 | Connect failed
0x02 | Location forward failed
0x03 | Send request failed
0x04 | POA in discarding state
0x05 | POA in holding state
0x06 | Unhandled C++ exception in server side
0x07 | Failure while reading the reply
0x08 | All protocols failed to parse the IOR
0x09 | Attempt to use null pointer
0x0A | Error during MProfile creation
0x0B | Timeout while trying to establish the connection
0x0C | Timeout while sending the request
0x0D | Timeout while waiting for the reply

Back to the TAO documentation.