The following structures are referenced in "12.7.2 X25_SET_FACILITY/X25_GET_FACILITY ioctls".
/* Packet sizes allowed are 0 (default), 16, 32, 64, * 128, 256, 512, 1024,2048, 4096 */ typedef struct packet_size_s { u_short sendpktsize; u_short recvpktsize; } PACKET_SIZE; /* window sizes allowed are 0: * (default), 1-7 (normal), 1-127 (extended) */ typedef struct window_size_s { u_char sendwndsize; u_char recvwndsize; } WINDOW_SIZE; /* throughput values allowed are * 0 (default), 3 (75) , 4 (150), 5 (300), * 6 (600), 7 (1200), 8 (2400), 9 (4800), * 10 (9600), 11 (19200), 12 (48000) */ typedef struct throughput_s { u_char sendthruput:4; u_char recvthruput:4; } THROUGHPUT; typedef struct cug_s { u_char cug_req; #define CUG_NONE 0 /* no CUG */ #define CUG_REQ 1 /* CUG */ #define CUG_REQ_ACS 2 /* CUG with outgoing access */ #define CUG_BI 3 /* bilateral CUG */ u_short cug_index; } CUG; typedef struct rpoa_s { u_char nrpoa; /* number of RPOAs requested */ #define MAX_RPOA 3 u_short rpoa_index[MAX_RPOA]; /* rpoas; nrpoa = 1 => normal format */ } RPOA; /* Zero value for a field means the field is not specified; if a * field has zero value, that and the foll. fields are not sent. */ typedef struct ete_tr_delay_s { u_short req_delay; u_short desired_delay; u_short max_delay; } ETE_TR_DELAY; typedef struct nui_s { u_char nui_len; /* NUI length */ #define MAX_NUI 64 u_char nui_data[MAX_NUI] /* NUI */ } NUI; typedef struct charge_info_s { u_char charge_len; #define MAX_CHARGE_INFO 64 u_char charge_data[MAX_CHARGE_INFO]; } CHARGE_INFO; typedef struct call_redir_s { u_char cr_reason; u_char cr_hostlen; u_char cr_host[(MAXHOSTADR+1)/2]; } CALL_REDIR; typedef struct aef_s { u_char aef_type; #define AEF_NONE 0 #define AEF_NSAP 1 #define AEF_PARTIAL_NSAP 2 #define AEF_NON_OSI 3 u_char aef_len; #define MAX_AEF 40 u_char aef[(MAX_AEF+1)/2]; } AEF; typedef struct precedence_s { u_char precedence_req; /* no precedence when = 0 * else precedence level */ u_char precedence; /* valid when precedence_req = 1 */ } PRECEDENCE; typedef struct private_fact_s { u_char p_len; /* total length of facilities */ #define MAX_PRIVATE 64 u_char p_fact[MAX_PRIVATE]; /* facilities exactly as they * are present in Call Request or * Call Accept packets */ } PRIVATE_FACT; typedef struct facility_s { u_int type; #define T_FACILITIES 0x00000001 #define T_REVERSE_CHARGE 0x00000002 #define T_FAST_SELECT_TYPE 0x00000003 #define T_PACKET_SIZE 0x00000004 #define T_WINDOW_SIZE 0x00000005 #define T_THROUGHPUT 0x00000006 #define T_CUG 0x00000007 #define T_RPOA 0x00000008 #define T_TR_DELAY 0x00000009 #define T_MIN_THRU_CLASS 0x0000000a #define T_ETE_TR_DELAY 0x0000000b #define T_NUI 0x0000000c #define T_CHARGE_REQ 0x0000000d #define T_CHARGE_MU 0x0000000e #define T_CHARGE_SEG 0x0000000f #define T_CHARGE_DUR 0x00000010 #define T_LINE_ADDR_MOD 0x00000011 #define T_CALL_REDIR 0x00000012 #define T_EXPEDITED 0x00000013 #define T_CALLED_AEF 0x00000014 #define T_CALLING_AEF 0x00000015 #define T_STDSERVICE 0x00000016 #define T_OSISERVICE 0x00000017 #define T_PRECEDENCE 0x00000018 #define T_PRIVATE 0x00000019 union { u_intfacilities;/* quick way to check * if a facility is present */ #define F_REVERSE_CHARGE 0x00000001 #define F_FAST_SELECT_TYPE 0x00000002 #define F_PACKET_SIZE 0x00000004 #define F_WINDOW_SIZE 0x00000008 #define F_THROUGHPUT 0x00000010 #define F_MIN_THRU_CLASS 0x00000020 #define F_CUG 0x00000040 #define F_RPOA 0x00000080 #define F_TR_DELAY 0x00000100 #define F_ETE_TR_DELAY 0x00000200 #define F_NUI 0x00000400 #define F_CHARGE_REQ 0x00000800 #define F_CHARGE_MU 0x00001000 #define F_CHARGE_SEG 0x00002000 #define F_CHARGE_DUR 0x00004000 #define F_LINE_ADDR_MOD 0x00008000 #define F_CALL_REDIR 0x00010000 #define F_EXPEDITED 0x00020000 #define F_CALLED_AEF 0x00040000 #define F_CALLING_AEF 0x00080000 #define F_STDSERVICE 0x00100000 #define F_OSISERVICE 0x00200000 #define F_PRECEDENCE 0x00400000 #define F_PRIVATE 0x00800000 u_char reverse_charge; /* permit/request reverse charge */ u_char fast_select_type; #define FAST_OFF 0 /* don't use fast select */ #define FAST_CLR_ONLY 1 /* restricted response */ #define FAST_ACPT_CLR 2 /* unrestricted response */ PACKET_SIZE packet_size; /* packet sizes */ WINDOW_SIZE window_size; /* window sizes */ THROUGHPUT throughput; /* used for throughput negotiation */ THROUGHPUT min_thru_class; /* minimum throughput class */ CUG cug; /* closed user group */ RPOA rpoa; /* RPOA specification */ u_short tr_delay; /* network transit delay */ ETE_TR_DELAY ete_tr_delay; /* end-to-end transit delay */ NUI nui; /* network user identification */ u_char charge_req; /* request charging info */ CHARGE_INFO charge_mu; /* charging info, monetary unit */ CHARGE_INFO charge_seg; /* charging info, segment */ CHARGE_INFO charge_dur; /* charging info, call duration */ u_char line_addr_mod; /* called line addr modified */ CALL_REDIR call_redir; /* call redirect notification */ u_char expedited; /* expedited data negotiation */ AEF called_aef; /* called aef */ AEF calling_aef; /* calling aef */ u_char osiservice; /* set when VC carries CLNP data */ u_char stdservice; /* set for DDN services */ PRECEDENCE prec; /* precedence for standard services */ PRIVATE_FACT private; /* non-X.25 local/rem facilities */ } facility; } FACILITY; /* Some convenient definitions. */ #define f_facilities facility.facilities #define f_reverse_chargefacility.reverse_charge #define f_fast_select_typefacility.fast_select_type #define f_packet_size facility.packet_size #define f_recvpktsize facility.packet_size.recvpktsize #define f_sendpktsize facility.packet_size.sendpktsize #define f_window_size facility.window_size #define f_recvwndsize facility.window_size.recvwndsize #define f_sendwndsize facility.window_size.sendwndsize #define f_throughput facility.throughput #define f_recvthruput facility.throughput.recvthruput #define f_sendthruput facility.throughput.sendthruput #define f_min_thru_classfacility.min_thru_class #define f_min_recvthruputfacility.min_thru_class.recvthruput #define f_min_sendthruputfacility.min_thru_class.sendthruput #define f_cug facility.cug #define f_cug_req facility.cug.cug_req #define f_cug_index facility.cug.cug_index #define f_rpoa facility.rpoa #define f_nrpoa facility.rpoa.nrpoa #define f_rpoa_req facility.rpoa.rpoa_req #define f_tr_delay facility.tr_delay #define f_ete_tr_delay facility.ete_tr_delay #define f_req_delay facility.ete_tr_delay.req_delay #define f_desired_delay facility.ete_tr_delay.desired_delay #define f_max_delay facility.ete_tr_delay.max_delay #define f_nui facility.nui #define f_charge_req facility.charge_req #define f_charge_mu facility.charge_mu #define f_charge_seg facility.charge_seg #define f_charge_dur facility.charge_dur #define f_line_addr_mod facility.line_addr_mod #define f_call_redir facility.call_redir #define f_cr_reason facility.call_redir.cr_reason #define f_cr_hostlen facility.call_redir.cr_hostlen #define f_cr_host facility.call_redir.cr_host #define f_expedited facility.expedited #define f_called_aef facility.called_aef #define f_cd_aef_type facility.called_aef.aef_type #define f_cd_aef_len facility.called_aef.aef_len #define f_cd_aef facility.called_aef.aef #define f_calling_aef facility.calling_aef #define f_cg_aef_type facility.calling_aef.aef_type #define f_cg_aef_len facility.calling_aef.aef_len #define f_cg_aef facility.calling_aef.aef #define f_osiservice facility.osiservice #define f_stdservice facility.stdservice #define f_prec facility.prec #define f_precedence_reqfacility.prec.precedence_req #define f_precedence facility.prec.precedence #define f_private facility.private