Used by the x25_call and x25_call_accept subroutines to pass facilities information.
#define X25FLG_RPOA 0x00000001 #define X25FLG_PSIZ 0x00000002 #define X25FLG_WSIZ 0x00000004 #define X25FLG_TCLS 0x00000008 #define X25FLG_REV_CHRG 0x00000010 #define X25FLG_FASTSEL 0x000000 20 #define X25FLG_FASTSEL_RSP 0x00000040 #define X25FLG_CUG 0x00000080 #define X25FLG_OA_CUG 0x0 0000100 #define X25FLG_BI_CUG 0x0 0000200 #define X25FLG_NUI_DATA 0x00000400 #define X25FLG_CI_SEG_CNT 0x00000800 #define X25FLG_CI_MON_UNT 0x00001000 #define X25FLG_CI_CALL_DUR 0x00002000 #define X25FLG_CI_REQUEST 0x00004000 #define X25FLG_CLAMN 0x00008000 #define X25FLG_CALL_REDR 0x00010000 #define X25FLG_TRAN_DEL 0x00020000 #define X25FLG_CALLING_ADDR_EXT 0x00040000 #define X25FLG_CALLED_ADDR_EXT 0x00080000 #define X25FLG_MIN_TCLS 0x00100000 #define X25FLG_END_TO_END_DEL 0x00200000 #define X25FLG_EXP_DATA 0x00400000 #define X25FLG_FACEXT 0x0 0800000
struct cb_fac_struct
{
  u_long flags ;
  unsigned fac_ext_len;
  u_char *fac_ext;        /* 
for non-X.25 facilities */
  u_char psiz_clg;
  u_char psiz_cld;
  u_char wsiz_clg;
  u_char wsiz_cld;
  u_char tcls_clg;
  u_char tcls_cld;
  unsigned rpoa_id_len;
  ushort *rpoa_id;
  ushort cug_id;
  unsigned nui_data_len;
  u_char *nui_data;
  unsigned ci_seg_cnt_len;
  u_char *ci_seg_cnt;
  unsigned ci_mon_unt_len;
  u_char *ci_mon_unt;
  unsigned ci_cal_dur_len;
  u_char *ci_cal_dur;
  u_char call_redr_addr[X25_MAX_ASCII_ADDRESS_LENGTH];
  u_char call_redr_reason;
  short tran_del;
  u_char calling_addr_ext_use;
  char calling_addr_ext[X25_MAX_EXT_ADDR_DIGITS+1];
  u_char called_addr_ext_use;
  char called_addr_ext[X25_MAX_EXT_ADDR_DIGITS+1];
  u_char clamn;
  u_char min_tcls_clg;
  u_char min_tcls_cld;
  unsigned end_to_end_del_len;
  ushort end_to_end_del[3];
};
Note: The example shows how to code the cb_fac_struct structure.
| X25FLG_RPOA | Recognized private operating agency selection required (rpoa_id). | 
| X25FLG_PSIZ | Packet size selection (psiz_clg, psiz_cld). | 
| X25FLG_WSIZ | Window size selection (wsiz_clg, wsiz_cld). | 
| X25FLG_TCLS | Throughput class required (tcls_clg, tcls_cld). | 
| X25FLG_REV_CHRG | Reverse Charge required (no corresponding field). | 
| X25FLG_FASTSEL | Fast select (no corresponding field). | 
| X25FLG_FASTSEL_RSP | Indicates whether a restricted response is required when the X25FLG_FASTSEL flag is also requested (no corresponding field). | 
| X25FLG_CUG | Closed user group selection required (cug_id). | 
| X25FLG_OA_CUG | Closed user group with outgoing access (basic format) selection required (cug_id). | 
| X25FLG_BI_CUG | Bilateral closed user group selection required (cug_id). | 
| X25FLG_NUI_DATA | Network user identification (nui_data). | 
| X25FLG_CI_SEG_CNT | Charging information: segment count (ci_seg_cnt). | 
| X25FLG_CI_MON_UNT | Charging information: monetary unit (ci_mon_unt). | 
| X25FLG_CI_CAL_DUR | Charging information: call duration (ci_cal_dur). | 
| X25FLG_CI_REQUEST | Charging information is required (no corresponding field). | 
| X25FLG_CLAMN | Called line address modified notification (clamn). | 
| X25FLG_CALL_REDR | Call redirection notification (call_redr_addr, call_redr_reason). | 
| X25FLG_TRAN_DEL | Transit delay selection and notification (tran_del). | 
| X25FLG_CALLING_ADDR_EXT | Calling address extension (calling_addr_ext_use, calling_addr_ext). | 
| X25FLG_CALLED_ADDR_EXT | Called address extension (called_addr_ext_use, called_addr_ext). | 
| X25FLG_MIN_TCLS | Quality of service negotiation: minimum throughput class (min_tcls_clg, min_tcls_cld). | 
| X25FLG_END_TO_END_DEL | Quality of service negotiation: end-to-end transit delay (end_to_end_del). | 
| X25FLG_EXP_DATA | Expedited data negotiation (no corresponding field). | 
| X25FLG_FACEXT | Facilities extension: for all other facilities, including national options (fac_ext). | 
The meanings of the structure fields are as follows, but the lengths associated with individual pointer fields are not explained:
| psiz_cld | Requested size for packets transmitted from the called DTE. Supported values are the same as for the psiz_clg field. | 
| wsiz_clg | Requested size for the window for packets transmitted by the calling DTE. Values range from 0x01 to 0x07 inclusive. | 
| wsiz_cld | Requested size for the window for packets to be transmitted by the called DTE. Values range from 0x01 to 0x07 inclusive. | 
| tcls_clg | Throughput class requested for data to be sent by the calling DTE. Supported values are: | 
| tcls_cld | Throughput class request for data sent from the called DTE. Supported values are the same as for the tcls_clg field. | 
| rpoa_id | Indicates the requested RPOA (Requested Private Operating Agency) transit network. Each element of the array is an RPOA identifier. | 
| cug_id | Indicates the identifier of a closed user group (CUG). Used for all modes of CUG and also for bilateral CUGs. | 
| nui_data | Network user identification data in a format specified by the network administrator. | 
| ci_seg_cnt | Charging information: segment count data. | 
| ci_mon_unt | Charging information: monetary unit data. | 
| ci_cal_dur | Charging information: call-duration data. | 
| call_redr_addr | The address to which the call has been redirected. The address is stored in ASCIIZ format. | 
| call_redr_reason | Contains reason for call redirection. | 
| tran_del | Transit delay in milliseconds. | 
| calling_addr_ext_use | Indicates the use of the calling address extension. | 
| calling_addr_ext |   Up to 40 digits containing the calling address extension. The address extension is stored in ASCIIZ format. The values for the extended calling and called address flags are:
#DEFINE X25_FAC_ADDR_EXT_USE_ENTIRE_OSI_NSAP(0) #DEFINE X25_FAC_ADDR_EXT_USE_PARTIAL_OSI_NSAP(1) #DEFINE X25_FAC_ADDR_EXT_USE_NON_OSI(2)  | 
| called_addr_ext_use | Indicates the use of the called address extension. | 
| called_addr_ext | Up to 40 digits containing the called address extension. The address extension is stored in ASCIIZ format. See the calling_addr_ext field for values. | 
| clamn | Called line address modified notification. Contains the reason for redirection. | 
| min_tcls_clg | Throughput class requested for data to be sent by the calling DTE. Supported values are: | 
| min_tcls_cld | Throughput class request for data sent from the called DTE. Supported values are the same as for the min_tcls_clg field. | 
| end_to_end_del | Specifies cumulative requested end-to-end and maximum-acceptable transit delays. Requested end-to-end and maximum-acceptable values are optional. | 
This is a simple example of the use of the cb_fac_struct structure:
/*         
             
             
             
           &
     */
struct cb_call_struct cb_call;
struct cb_fac_struct fac_struct;
u_char facilities_extension[10],facilities_extension[8];
ushort rpoa_ext_id[3] = {7,8,9};
char extended_calling_addr[]= "1234567890";  /* extension */
/* Initialize flags        
             
             
             */
fac_struct.flags = 0;
/* Use of RPOAE        
             
             
             
    */
fac_struct.rpoa_id = rpoa_ext_id;
fac_struct.rpoa_id_len = 3;
fac_struct.flags |= X25FLG_RPOA;
/* Use of extended addressing     
             
             
      */
fac_struct.calling_addr_ext = extended_calling_addr;
fac_struct.flags |= X25FLG_CALLING_ADDR_EXT;
/* Use of extended facilities     
             
             
      */
facilities_extension[0] = 0x00;     /* 
start of a Facility Marker */
facilities_extension[1] = 0x00;     /* 
non_X25 facility supported */
             
             
          /* by 
calling DTE          
   */
facilities_extension[2] = 0x55;     /* 
a facility          
       */
facilities_extension[3] = 0x66;     /* 
a facility          
      
 */facilities_extension[4] = 0x00;     
/* start of a Facility Marker */
facilities_extension[5] = 0xFF;     /* 
non_X25 facility supported */
             
             
          /* by 
called DTE          
    */
facilities_extension[6] = 0x88;     /* 
a facility          
       */
facilities_extension[7] = 0x99;     /* 
a facility          
       */
strcpy(fac_struct.fac_ext, facilities_extension);
fac_struct.fac_ext_len = 8;
fac_struct.flags |= X25FLG_FACEXT;
/*****************************************************************/
/* In this example a cb_call structure 
is initialized          
  */
/* with a cb_fac structure.     
             
             
       */
/*****************************************************************/
cb_call.cb_fac = &fac_struct;
cb_call.flags = X25FLG_CB_FAC;
The x25sdefs.h file.
The cb_call_struct structure, cb_clear_struct structure.