Solstice X.25 9.2 Developer's Guide

7.6 N_getVCstats--Get Per-Virtual-Circuit Statistics

This ioctl is used to retrieve per-virtual circuit state and statistics, for all virtual circuits currently active over all configured links.

Associated Structure

The vcstatsf structure, defined in x25_control.h, takes this format:

struct vcstatsf {
         int first_ent;          /* Where to start search   */
         unsigned char num_ent   /* Number entries returned */
         struct pervcinfo vc;    /* Data buffer, extendable by*/
                                 /* malloc overlay*/
 };

The members of the vcstatsf structure are:

Table 7-12 vcstatsf fields

Member 

Description 

first_ent

Informs the X.25 multiplexor where to start or restart the table read. On return, it is set to point the next entry. 

num_ent

Indicates the number of virtual circuit entries returned in the vc member.

vc

This is either a single pervcinfo structure or an array of pervcinfo structures, of size MAX_VC_ENTRIES, each containing the state and statistics of an individual virtual circuit.

If a single pervcinfo structure is used, and num_ent is not 0, and statistics are returned of the virtual circuit specified in the lci member of the pervcinfo structure, with a link identifier specified using xu_ident.

If a single pervcinfo structure is used, and num_ent is 0, the number of open virtual circuits is returned in first_ent.

If an array of pervcinfo structures is used, and num_ent is set to 0, statistics are returned for the Logical Channel Number set using the lci member.

If an array of pervcinfo structures is used, and num_ent is set to 1, statistics are returned for all virtual circuits on the link specified using xu_ident.

If an array of pervcinfo structures is used, and num_ent is set to MAX_VC_ENTRIES, statistics are returned for all virtual circuits on all links.

The contents of the pervcinfo structure are:

struct pervcinfo {
        struct xaddrf     rem_addr;     /* = called for outward calls */
        /* = caller for inward calls  */
        uint32_t     xu_ident;     /* link id                    */
        uint32_t     process_id;   /* effective user id          */
        unsigned short    lci;          /* Logical Channel Identifier */
        unsigned char     xstate;       /* VC state                   */
        unsigned char     xtag;         /* VC check record            */
        unsigned char     ampvc;        /* =1 if a PVC                */
        unsigned char     call_direction;
        /* DIRECTION_xxx (see mib)    */
        unsigned char     domain;       /* was in 8.0, not in R7. Put it back */
        uint32_t     perVC_stats[perVCstat_size];
        /* Per-VC statistics array    */
        /*
         * move these to the end, so that the first bit of the struct is
         * identical to the 8.0 one
        */
        unsigned char     vctype;       /* what _is_ this? */
        struct xaddrf     loc_addr;     /* = caller for outward calls */
        /* = called for inward calls  */
        uint32_t     start_time;   /* time the VC was created */
};
 

xstate contains the state of the VC. Possible states and meanings are:

Table 7-13 xstate summary

Entry 

Description 

Idle

Record is not in use 

AskingNRS

CR is being validated by NRS 

P1

VC state is READY 

P2

VC in DTE CALL REQUEST 

P3

VC in DXE INCOMING CALL 

P5

VC in CALL COLLISION 

DataTransfer

VC in P4 (see xflags 

DXEbusy

VC in P4, DXE sent RNR 

D2

VC in DTE RESET REQUEST 

D2pending

Wanting buffer for RESET 

WtgRCU

Waiting U RSC to int.err. 

WtgRCN

Waiting X.25 RSC for user 

WtgRCNpending

Buffer reqd to enter state 

P4pending

Buffer reqd for X.25 RSC 

pRESUonly

Buffer for user rst only 

RESUonly

User only being reset 

pDTransfer

Buffer for RSC to user 

WRCUpending

Buffer reqd internal RST 

DXErpending

Buffer reqd RST indication 

DXEresetting

Waiting U RSC to X.25 RI 

P6

VC in DTE CLEAR REQUEST 

P6pending

Wanting buffer for CLEAR 

WUcpending

Buffer reqd DI no netconn 

WUNcpending

Buffer reqd internal DI 

DXEcpending

Buffer reqd CLR REQ->User 

DXEcfpending

Buffer reqd CLC to User 

perVC_stats contains statistics counts, as follows:

Table 7-14 perVC_stats summary

Entry 

Description 

cll_in_v

Calls received and indicated 

cll_out_v

Calls sent 

caa_in_v

Call established for outgoing 

caa_out_v

Call established for incoming 

dt_in_v

Data packets received 

dt_out_v

Data packets sent 

ed_in_v

Interrupts received 

ed_out_v

Interrupts sent 

rnr_in_v

Receiver not ready received 

rnr_out_v

Receiver not ready sent 

rr_in_v

Receiver ready rvcd 

rr_out_v

Receiver ready sent 

rst_in_v

Resets received 

rst_out_v

Resets sent 

rsc_in_v

Restart confirms received 

rsc_out_v

Restart confirms sent 

clr_in_v

Clears received 

clr_out_v

Clears sent 

clc_in_v

Clear confirms received 

clc_out_v

Clear confirms sent