[Digital logo]
[HR]

DECnet-Plus
Network Control Language Reference


Previous | Contents

In the DECnet-Plus Enterprise Management Architecture (EMA) model, data type includes the object-oriented interpretation. The description of a data type also defines rules for implementing commonly used operations on values of that same data type. For example, the definition of the simple-name data type includes a description of how to test two values of this type for equality. Since simple-name values should be compared in a case-insensitive way, they cannot be treated as a string of bytes or some other generalization. Simple-name values, however, may be entered with a format similar to a latin1string data type.

Thus, for each data type, we define the behavior of values with respect to the following operations:

All base data types support parse, display, and protocol encoding.

Optional operations may not be supported for a given data type. For example, it is impossible to order values of the unique identifiers (UID) data type, because they were not designed for this purpose. You can, however, test for equality of entity UIDs, and order binary absolute time (or timestamp) values.

B.1.2 Kinds of Data Types

This section describes two kinds of data types:

B.1.2.1 Base Data Types

Base data types cannot be defined in terms of other data types. For example, the octet string data type contains printable strings. The latin1string data type is a subset of octet string; however, the latin1string data type exists independently of the octet string and is not printable.

However, the method of printing latin1string values, which are just text strings, is quite different from the method of printing octet string values. Octet string values are displayed as hexadecimal strings (see Section B.1.22 for details). Therefore, the latin1string data type is defined as an entirely separate base data type.

For another example, the data type IPAddress is the representation of a TCP/IP network address. The IPAddress type cannot be defined in terms of the octet string type, for instance, because IP addresses do not parse or display in the same manner as octet string values. Here is the same string of bytes in both IPAddress format, and octet-string format:

IPAddress: 16.20.0.10
octet string: '1014000a'H

Since none of the previously existing base types can support the desired user representation of an IPAddress, a new base type with the appropriate rules for parse, display, and other operations is defined for this purpose.

B.1.2.2 Constructed Data Types

Constructed data types allow the entity designer to create new data types without changing the DECnet-Plus software in any way. For example, consider the data type of the type attribute of the routing entity. This attribute is registered with the following syntax:

ATTRIBUTE Type = 1: RouterType 
... 
END ATTRIBUTE Type; 

Where RouterType is the data type of the attribute. This constructed type is registered elsewhere as:

TYPE RouterType = 8  ( 
     Endnode    = 0  , 
     L1Router   = 1  , 
     L2Router   = 2  )  ; 

This data type declaration is an enumeration. If you are familiar with the C programming language, then you have encountered similar constructs. The type declaration here means that the type attribute may only be set to one of the values shown in the RouterType declaration above.

As another example, consider the fictitious data type

TYPE IntegerSet = 2002 : SET OF Integer; 

IntegerSet is defined as a set of integers. This data type is a constructed type because it contains two base types, SET OF and Integer. The parse, display, and other operational rules for the SET OF data type are not altered by the fact that the set contains values of type Integer. The operational values of the type Integer remain unaffected as well. Therefore, the constructed data type IntegerSet is a SET OF Integer.

Any data type may be used in defining a constructed data type, but only some data types actually define methods for these constructions. In the example of the constructed data type SET OF Integer, the Integer data type definition does not actually state that it can be used inside a SET OF data type. The SET OF data type, however, does state that any other data type can be used as the contents of the set. Thus, it is the SET OF data type that includes the rules for constructing new types from it.

New base types are defined when the entity designer needs a value that cannot be defined as a constructed type (as some subset or supported combination of existing base types). The existing set of base types represents an engineering trade off between consistency of user interface and adherence to existing conventions for network management.

B.1.3 Data Types and Supported Operations

Table B-1 shows which optional operations are supported for each of the base types. The table uses the following symbols:


Y --- Yes
N --- No
Y-IF --- Yes, if all requirements are met (see type description)
I --- Implementation dependent

Table B-1 Base Data Type and Supported Operations
Data Type Equality Ordering Wildcard Construction
Boolean Y N N N
Integer (8,16,32) Y Y N Y
Unsigned (8,16,32) Y Y N Y
Octet Y Y N N
Octet string Y Y N N
Hex-string Y Y N N
Null Y N N N
Latin1String Y I N N
Filespec I I I N
ObjectIdentifier Y N N N
UID Y I N N
NSCTS Y I N N
Counter (64,32,16) Y Y N N
Simple-name Y I Y N
Phase4Name
Fullname Y I Y N
BinAbsTime Y Y N N
BinRelTime Y Y N N
CharAbsTime Y Y N N
CharRelTime Y Y N N
ID802 Y Y N N
EthernetProtocolType Y Y N N
IEEE802SNAPPID Y Y N N
DTEAddress Y I Y N
NSAPAddress Y N N N
NetworkEntityTitle Y N N N
AreaAddress Y N N N
Phase4Address
IPAddress
AddressPrefix Y N N N
TransportSelector Y Y N N
End-user-specification Y N N N
TowerSet Y N N N
ProtocolTower Y N N N
Floor Y N N N
Local-entity-name Y N Y N
Full-entity-name Y N Y N
Version Y Y N N
VersionWithEdit Y Y N N
Implementation Y N N N
ComponentName Y N N N
Enumeration Y Y N Y
Bit-set Y Y N Y
Range Y N N Y
Record Y Y--IF Y--IF Y
SequenceOf Y N Y Y
SetOf Y Y--IF N Y

B.1.4 Definitions of Base Data Types

The following sections describe data types. Many of the data types listed in the per-entity documentation are not base types, but constructed types. Look in the beginning of the per-entity documentation to find the definition of these constructed types.
Type Definition
Boolean True or false.
Counter A positive number.
DTE address X.25 address that consists of up to 15 decimal digits; wildcards are allowed.
Entity name A text string that identifies an entity.
Filespec A text string that is the name and/or location of a file.
Hex-string A string of zero or more hexadecimal digits.
Integer A number, either negative or positive.
Latin1String A general, printable text string.
Nodename The name of a node.
Octet A hexadecimal digit, the length of which is variable, without a maximum, and may be zero.
Octet string An arbitrary length string of hexadecimal digits.
Phase4Name An alphanumeric string of 1--6 characters that names a Phase IV node.
Simple-name A string of characters; unquoted, quoted, or possibly binary representation.
Set A collection of elements where order is not important; elements of a set are enclosed in braces and separated by commas.
Record A data type containing one or more fields, each with its own predefined data type; order is significant.
Bit-set A data type using bits rather than larger fields to hold data; syntax is the same as for a set.

B.1.5 Boolean

The boolean data type has two values, true and false, in an undefined order.

On output, the strings appear as true and false. On input, the words true or false may be abbreviated to a single character and are not case-sensitive. The boolean data type does not support the use of wildcard symbols.

B.1.6 Counters

All counters for an entity are created together and a time of creation is associated with the block. The following counter types are defined:
Type Modulus
Counter16 2 16
Counter32 2 32
Counter64 2 64

If no modulus is specified, or if the type Counter is specified without reference to a modulus, the modulus 264 is assumed. The counter is displayed as an unsigned integer. It cannot be set to zero.

In DECnet-Plus, when a counter reaches its maximum value, its next value is zero. Counters never latch (as they did in Phase IV). Consequently, there is never any need to reset or zero the counters. This is called "wrapping counters" because the values wrap around to zero (they are like true modulo 2**n integer values).

NCL and other network management applications are able to cope with wrapping counters and can still compute counter differences, even if the second sampled value of the counter is less than the first because of counter wrap. The implicit assumption is that any counter with n (where n is a power of 2) distinct possible values cannot be changed more than n times between samples. Since all DECnet-Plus counters are 64-bit counters, the number of possible values is 2 raised to the 64th power, which is a 20-digit decimal number. Very few counters will ever exceed 32 bits, and it does not appear likely that a 64-bit counter will ever wrap once, let alone twice.

B.1.7 DTE Address

A DTE Address is an x.25-defined address of some data terminal equipment (DTE). It is represented as a latin1string whose length is 0 to 15 digits or wildcard characters. Wildcard characters can be embedded: the asterisk (*) matches any sequence of zero or more digits; the question mark (?) and percent sign (%) match any single digit.

The user-visible syntax of a DTE address is {digit-wildcard}. For example, 5084865322 is a DTE address.

B.1.8 Entity Name

The entity name data type holds an arbitrary name of an entity. It is usually used as a pointer, so that an attribute (or argument) can refer to another entity.

Entity names appear in two forms: as a full-entity-name, which includes both the global and the local portion of the entity's name, and as a local-entity-name, which includes only the local portion of the entity's name. A local-entity-name is always assumed to be subordinate to the node executing the directive. A local-entity-name is a convenient method of describing the configuration of the components that comprise a node.

Entity names can be accessed by wildcards.

An entity class (the sequence of classes) is also a defined type, both as a full class name and as a local class name. For example, routing circuit csmacd-c2 is a local entity name. Neither the full nor local class name has a defined order, but allow the use of wildcards in the same manner as an entity name.

B.1.9 EthernetProtocol

The EthernetProtocol data type consists of two octets, Octet #0 and #1. Octet #0 is transmitted first.

The user-visible representation is a pair of octets (each a hex-digit) separated by a hyphen (-). For example 60-03 is a valid Ethernet data type.

B.1.10 Filespec

Wildcard symbols may be supported, as defined by the target implementation.

A file specification appears in one of three forms, depending on the characters it contains. While most file specifications can be entered and displayed as simple names, the inclusion of certain punctuation characters or any control character makes the interpretation of the file specification ambiguous. The following three forms of a file specification may be entered or displayed:

The filespec data type for a file specification should be compatible with the transference of file specifications in the DECnet Data Acess Protocol (DAP). Since file specifications are interpreted according to the file system at the target entity, there is no guarantee that a file specification for one operating system will be acceptable to another. The target implementation defines the ordering of filespec.

B.1.11 Fullname

The fullname data type represents globally distinct names and does not have a defined ordering. It does support the use of wildcards. The supported symbols include the asterisk (*), which matches any sequence of zero or more characters, and the question mark (?), which matches any single character. For example, phasev_nsp.usa.mass.admin.fred is a full name.

For more information, refer to the DECnet-Plus DECdns Management Guide.

B.1.12 Hex-String

A hex-string represents a string of zero or more hexadecimal digits (also called semi-octets or nibbles). A hex-string differs from an octet-string only in that it allows for an odd number of hexadecimal digits. Two hex-strings are equal if they have the same length and hexadecimal digits. Ordering is defined as with an octet-string, except the comparison is by hexadecimal digit rather than by octet. The hex-string data type does not support wildcards.

Enter the hex-string as follows:

' {hex-digit} ' h | % x { hex-digit } 

On output, the hex digits A to F are displayed in uppercase. For example, 'AABBCC'h is a hex-string.

B.1.13 ID802

An ID (or System ID or LAN Address), is a 48-bit quantity, uniquely assigned over space and used as an Ethernet or IEEE 802.3 CSMA-CD address (and for other purposes).

An ID consists of six octets (48 bits) numbered from 0 to 5. When transmitted on an 802.3 LAN, the least significant bit of Octet 0 is transmitted first and the most significant bit of Octet 5 is transmitted last.

The user-visible representation of a system ID is six octets, each displayed as a pair of hexadecimal digits separated by hyphens (-) in the order 0,1,2,3,4,5. For example:

08-00-2B-02-B0-C0 

B.1.14 IEEE802SNAPPID (Protocol Identification)

The IEEE802SNAPPID (IEEE 802 Sub-Network Access Protocol (SNAP), Protocol Identification) consists of five octets numbered from 0 to 4. When transmitted on an 802.3 LAN, the least significant bit of Octet 0 is transmitted first, and most significant bit of Octet 4 is transmitted last.

The user-visible representation is five octets, each displayed as a pair of hex digits separated by hyphens (-) in the order 0,1,2,3,4. For example,

01-23-45-67-89. 

B.1.15 Implementation and Component Name

An implementation data type identifies the components that make up an entity and their implementation versions. An implementation is a set of components, where each component is a record containing a registered component name and a version. The version field may be of any base type, although it is recommended that the common version or version-with-edit data type be used. The data type used for the version field is registered with the component name.

Enter the type as follows:

{ [Name=component-name, Version=version_number] } 

For example:

{[Name=DECnet VAX, Version=V5.0.0-123], 
[Name=VMS, Version=T5.1.0], 
[Name=VAX 780, Version=V3.1.7]} 

B.1.16 Integer

The integer data type represents signed or unsigned integer values. The signed integer values may range from --231 to +231--1, following the normal ordering. The unsigned integer values may range from 0 to +232--1, following the normal ordering. Remember the following:

B.1.17 Latin1String

The Latin1String type represents general, printable text strings. These strings can be of any length (including zero). The characters in the Latin 1 set are described in ISO DIS 8859/1 Latin Alphabet Nr 1.

Only printable characters appear in a Latin1String. ASCII control characters (00 to 1F, 7F, and 80 to 9F (hex)) cannot appear.

On input and output, the string is embedded either quote characters (") or apostrophe characters ('). Double the quote character to embed a quote within a string delimited by the same type of quote character.

B.1.18 Network Layer Addresses

Network layer addresses in DNA may be of four types:

None of these data types have a defined ordering or support the use of wildcards. Refer to the DECnet-Plus Introduction and User's Guide for a description of the parts of a DECnet-Plus Network layer address.

B.1.19 Nodename

The nodename is used to represent names of nodes using either a full-name or a Phase IV node name. The only difference between a node-name and a full-name is that a nodename must also be a Phase IV synonym.

B.1.20 Null

The null data type is used when the set of possible values is empty. This is used only to indicate that an entity class has no instance identifier, and then (to make the CMIP protocol complete) a null value is sent.

The null type cannot be assigned to an attribute or argument.

B.1.21 Object-Identifier

The object-identifier data type represents registered values of the ISO object identifier. Ordering is undefined and wildcarding symbols are not supported. For example, 1.2.3.4.5.6 represents a registered value.

B.1.22 Octet and Octet String

The octet string data type is used to represent arbitrary data (octets). It is displayed as a hexadecimal string (that is, HI-n in old NICE form). The length of an octet string is variable, without a maximum, and may be zero.


Previous | Next | Contents | [Home] | [Comments] | [Ordering info] | [Help]

[HR]

  NCL_PROFILE_035.HTML
  OSSG Documentation
   2-DEC-1996 12:49:03.06

Copyright © Digital Equipment Corporation 1996. All Rights Reserved.

Legal