AddLLCNode

Type

EXS SwitchKit API message

For the same functionality, the EXS API message is Assign Node ID (0x0010).

Purpose

Use SK_AddLLCNode at the initial configuration of your system and to dynamically add a node while Low-Level Communicator is running.

Important! To assign a logical node ID within a CSP system, the ring must be out-of-service (OOS). Assuming the ring is OOS and the nodes already assigned, if you try to re-assign a logical node ID, the AssignNode messages issued on behalf of the AddLLCNode message will be NACKed by that node. You must have unique logical node IDs at all times within a CSP system. For example, if you have two nodes (nodes 2 and 3) and you want to re-assign logical node ID 2 to node 3 and logical node ID 3 to node 2 the AssignNode messages will be NACKED by the CSP and the AddLLCNode will ultimately fail. You will have to de-assign logical node IDs 2 and 3 first by sending a ResetConfig message to each of the nodes. Only then can you freely assign node IDs using the AddLLCNode message.

Description

The AddLLCNode message informs the LLC of a CSP Node. It specifies the Node ID and the matrix controller IP addresses for each node. This can be used to add, update, or delete a node. The node must already have software downloaded through TFTP. Sending SK_AddLLCNode for a node that needs software will fail.

Do not use the shared IP address that can be used for SIP and H.323 redundancy. See Configuring a Shared IP Address Using BOOTP Server in the API Developer’s Guide: Overview. Use the fixed IP addresses for the matrix cards in the AddLLCNode() message. If you don't, the LLC will inaccurately reflect the state of the CSP.

Important! When LLC receives a request to connect to a node using AddLLCNode(), LLC will maintain that connection until a disconnect message is received. If the specified IP address is not reachable, LLC will continue attempting the connection indefinitely. This condition will be logged in the LLC maintenance log file.

When the Switch Manager reconnects to the LLC, AddLLCNode messages are sent from the Switch Manager to the LLC. This causes the LLC to open a socket (connection) to the CSP and the AssignNode message (which is the switch-level equivalent of AddLLCNode) is sent to the CSP.

Sent by

SwitchManager

Add a Node

To add a node, you must send a configuration file with SwitchManager. The configuration file should contain at least the following information:

AddLLCNode (matrix1="10.10.55.10", matrix2="10.10.55.11", RequestedNode=0x08);

If you are adding a node with a single Matrix Controller and you use the Matrix2 argument in your message, be sure to enter the 0-length string as its value. The configuration file should contain at least the following information:

AddLLCNode (matrix1="10.10.55.10", matrix2="", RequestedNode=0x08);

Arguments

The following table shows the arguments you can change:

Argument

Description

Action

Specifies whether a node gets added, updated, or deleted. The values are:
SK_ADD_NODE = 0 (default)
SK_DELETE_NODE =1
SK_UPDATE_NODE =2

CallControlNode

Reserved

Matrix1

A text field corresponding to the IP address of the primary Matrix Controller.

Matrix2

A text field corresponding to the IP address of the secondary Matrix Controller, if it exists. If there is only one Matrix Controller in the node, this field must be set to "", that is, the 0-length string.

NodeType

• Needs to be specified for ISDN and H.323 device server nodes.

NodeType = SK_LSS_DS_SYSTEM or 16.

 

• Needs to be specified for EXNET Connect nodes:

NodeType = SK_EXNET_SYSTEM or 300.

• If the above values are not used, the NodeType will default to SK_CS_SYSTEM or 200.

PhysicalNode

Reserved

RequestedNode

RequestedNode is the logical node ID requested to be assigned to the new node. The API will attempt to assign this node:

If there is no node ID currently on the node;

If it is currently assigned a different node ID.

It is not a guarantee that this node will be assigned. In particular, the node ID might already be in use on the ring. If so, AddLLCNode will fail, no connection will be established with the node. If the LLC is already connected to a node with the specified logical node ID, the AddLLCNode is considered an update, if treated accordingly.

SeqNumWidth

Determines whether a message will have two-byte sequence numbers or one-byte sequence numbers.

A one-byte SeqNumWidth is 0xff

A two-byte SeqNumWidth is 0xffff

ISUPRemCon

Specifies whether SS7 cards can act as though they are on a ring, even if they are not. The values are:

If set to 0, a multi-node system must have an EXNET (ring) card.

If set to 1, forces the system to act as if it is a multi-node system even when there is no EXNET (ring) card in the CSP.

Configuration

AddLLCNode (

Node = integer,

ConnectionID = integer,

Matrix1 = string,

Matrix2 = string,

RequestedNode = integer,

Action = integer);

C Structure

typedef struct {

char Matrix1[30];

char Matrix2[30];

int RequestedNode;

int PhysicalNode;

unsigned short NodeType;

unsigned short CallControlNode;

UBYTE Action;

unsigned short SeqNumWidth;

UBYTE ISUPRemCon;;

} SK_AddLLCNode;

C Structure Response

typedef struct {

int Status;

int ActualNode;

UBYTE DownloadStatus;

} SK_AddLLCNodeAck;

C++ Class

class SKC_AddLLCNode : public SKC_ToolkitMessage {

public:

const char *getMatrix1() const;

void setMatrix1(const char *x);

const char *getMatrix2() const;

void setMatrix2(const char *x);

int getRequestedNode() const;

void setRequestedNode(int x);

int getPhysicalNode() const;

void setPhysicalNode(int x);

unsigned short getNodeType() const;

void setNodeType(unsigned short x);

unsigned short getCallControlNode() const;

void setCallControlNode(unsigned short x);

UBYTE getAction() const;

void setAction(UBYTE x);

unsigned short getSeqNumWidth() const;

void setSeqNumWidth(unsigned short x);

UBYTE getISUPRemCon() const;

void setISUPRemCon(UBYTE x);

};

 

 

C++ Class Response

class SKC_AddLLCNodeAck : public SKC_ToolkitAck {

public:

int getStatus() const;

void setStatus(int x);

int getActualNode() const;

void setActualNode(int x);

UBYTE getDownloadStatus() const;

void setDownloadStatus(UBYTE x);

};