The ioctls described in this section can only be used over LAPB.
The L_GETGSTATS ioctl reads global layer 2 statistics from the LAPB driver.
The lapb_gstioc structure is used.
/* Ioctl block for L_GETGSTATS ioctl */ struct lapb_gstioc { uint8 lli_type; /* Table type = LI_GSTATS */ uint8 lli_spare[3]; /* (for alignment) */ uint32 lapbgstats[globstatmax]; /* global statistics table */ }; /* Global L2 statistics */ #define frames_tx 0 /* frames transmitted */ #define frames_rx 1 /* frames received */ #define sabme_tx 2 /* SABMEs transmitted */ #define sabme_rx 3 /* SABMEs received */ #define bytes_tx 4 /* data bytes transmitted */ #define bytes_rx 5 /* data bytes received */ #define globstatmax 6 /* size of global stats array */
The members of the lapb_gstioc structure are:
Table 11-43 Members of the lapb_gstioc structure
Member |
Description |
---|---|
lli_type |
The table type |
lapbgstats |
The global statistics table |
This ioctl returns the PPA and link index associated with the stream.
/* Ioctl block for L_SETPPA and L_GETPPA commands */ struct ll_snioc { uint8 lli_type; /* Table type = LI_SPPA */ uint8 lli_class; /* DTE/DCE/extended */ uint16 lli_slp_pri; /* SLP priority */ uint32 lli_ppa; /* PPA/ Subnetwork ID character */ uint32 lli_index; /* Link index */ };
The members of the ll_snioc structure are:
Table 11-44 Members of the ll_snioc structure
Member |
Description |
---|---|
lli_type |
The table type. This should always be LI_SPPA. |
lli_class |
This indicates the type of link. LC_LLC2 must be used for LLC2; LC__LAPBDTE or LC_LAPBDCE must be used for LAPB. The file /usr/include/netdlc/ll_proto.h contains a complete list of values. |
lli_slp_pri |
This determines the priority of SLP when MLP is used. |
lli_ppa |
The PPA identifier |
lli_index |
The link index. This must be set with the muxid value returned by the I-LINK ioctl when LAPB is placed over a serial driver. |
Error |
Description |
---|---|
ENODEV |
No such device or a DL_ATTACH_REQ has not been sent. |
The L_GETSTATS ioctl reads per-link (i.e., per-PPA) statistics from the LAPB driver.
The lapb_stioc structure is used
/* Ioctl block for L_GETSTATS ioctl */ struct lapb_stioc { uint8 lli_type; /* Table type = LI_STATS */ uint8 lli_spare[3]; /* (for alignment) */ uint32 lli_ppa; /* PPA */ lapbstats_t lli_stats; /* Table of stats values */ };
The lapbstats_t structure needed for L_GETSTATS is defined as follows:
typedef struct lapb2_stats { uint32 lapbmonarray[laphstatmax]; /* array of LAPB stats */ } lapbstats_t; /* Statistics table definitions */ #define tx_ign 0 /* no. ignored + not sent */ #define rx_badlen 1 /* bad length frames received */ #define rx_unknown 2 /* unknown frames received */ #define t1_exp 3 /* no. of T1 timeouts */ #define t4_exp 4 /* no. of T4 timeouts */ #define t4_n2_exp 5 /* T4 timeouts after N2 times */ #define RR_rx_cmd 6 /* RR = Receive Ready */ #define RR_rx_rsp 7 /* tx = transmitted */ #define RR_tx_cmd 8 /* rx = received */ #define RR_tx_rsp 9 /* cmd/rsp = command/response */ #define RR_tx_cmd_p 10 /* p = p-bit set */ #define RNR_rx_cmd 11 /* RNR = Receive Not Ready */ #define RNR_rx_rsp 12 #define RNR_tx_cmd 13 #define RNR_tx_rsp 14 #define RNR_tx_cmd_p 15 #define REJ_rx_cmd 16 /* REJ = Reject */ #define REJ_rx_rsp 17 #define REJ_tx_cmd 18 #define REJ_tx_rsp 19 #define REJ_tx_cmd_p 20 #define SABME_rx_cmd 21 /* SABME = Set Asynchronous */ #define SABME_tx_cmd 22 /* Balanced Mode Extended */ #define DISC_rx_cmd 23 /* DISC = Disconnect */ #define DISC_tx_cmd 24 #define UA_rx_rsp 25 /* UA = Unnumbered */ #define UA_tx_rsp 26 /* Acknowledgment */ #define DM_rx_rsp 27 /* */ #define DM_tx_rsp 28 #define I_rx_cmd 29 /* I = Information */ #define I_tx_cmd 30 #define FRMR_rx_rsp 31 /* FRMR = Frame Reject */ #define FRMR_tx_rsp 32 #define tx_rtr 33 /* no. of retransmitted frames */ #define rx_bad 34 /* erroneous frames received */ #define rx_dud 35 /* received and discarded */ #define rx_ign 36 /* received and ignored */ #define I_rx_rsp 37 #define I_tx_rsp 38 #define UI_rx_cmd 39 #define UI_tx_cmd 40 #define XID_rx_cmd 41 #define XID_rx_rsp 42 #define XID_tx_cmd 43 #define XID_tx_rsp 44 #define TEST_rx_cmd 45 #define TEST_rx_rsp 46 #define TEST_tx_cmd 47 #define TEST_tx_rsp 48 #define llc2statmax 40
This ioctl associates a PPA with a physical device underneath the layer two provider.
/* Ioctl block for L_SETPPA and L_GETPPA commands */ struct ll_snioc { uint8 lli_type; /* Table type = LI_SPPA */ uint8 lli_class; /* DTE/DCE/extended */ uint16 lli_slp_pri; /* SLP priority */ uint32 lli_ppa; /* PPA/ Subnetwork ID character */ uint32 lli_index; /* Link index */ };
The members are:
Table 11-46 Members of the ll_snioc structure
Member |
Description |
---|---|
lli_type |
The table type. This should always be LI_SPPA. |
lli_class |
This indicates the type of link. LC_LAPBDTE or LC_LAPBDCE must be used for LAPB. The file /usr/include/netdlc/ll_proto.h contains a complete list of values. |
lli_slp_pri |
This determines the priority of SLP when MLP is used. |
lli_ppa |
The PPA identifier |
lli_index |
The link index. This must be set with the muxid value returned by the I-LINK ioctl when LAPB is placed over a serial driver. |
Error |
Description |
---|---|
EBUSY |
The PPA is already being used by another stream. |
ENODEV |
The specified lli_index has not been found. |
The L_ZEROSTATS ioctl clears per-link statistics in the LLC2 and LAPB drivers.
/* Ioctl block for L_ZEROSTATS ioctl */ struct ll_hdioc { uint8 lli_type; /* Table type = LI_PLAIN */ uint8 lli_spare[3]; /* (for alignment) */ uint32 lli_ppa; /* PPA (0xff for all links) */ };
The W_SETTUNE ioctl sets the tunable parameters of the LAPB wanmod module. This controls physical parameters such as the maximum frame length and line speed.
The following is from the file /usr/include/netx25/wan_control.h.
/* Ioctl block for WAN W_SETTUNE command */ struct wan_tnioc { uint8 w_type; /* Always = WAN_TUNE */ uint8 w_spare[3]; /* (for alignment) */ uint32 w_snid; /* subnetwork id character ('*' => 'all') */ wantune_t wan_tune; /* Table of tuning values */ }; /* WAN tuning structure */ typedef struct wantune { uint16 WAN_options; /* WAN options */ struct WAN_hddef WAN_hd; /* HD information. */ } wantune_t; /* This is the structure which contains all tuneable information */ struct WAN_hddef { uint16 WAN_maxframe; /* WAN maximum frame size */ int WAN_baud; /* WAN baud rate */ uint16 WAN_interface ; /* WAN physical interface */ } union { uint16 WAN_cptype; /* Variant type */ struct WAN_x21 WAN_x21def; struct WAN_v25 WAN_v25def; } WAN_cpdef ; /* WAN call procedural definition * * for hardware interface. */ }; /* This contains all of the national network specific timeouts. */ struct WAN_v25 { uint16 WAN_cptype; /* Variant type. */ uint16 callreq; /* Abort time for call request command * * if network does not support CFI. */ };
The members of the wan_tnioc structure are:
Table 11-48 Members of the wan_tnioc structure
Member |
Description |
---|---|
w_snid |
The link id. It should be set to the same value as lli_ppa in the L_SETPPA L_SETTUNE ioctls. |
WAN_options |
Reserved for future use. Must be set to 0. |
WAN_maxframe |
The maximum frame size to be used on this interface (unit is octet). |
WAN_baud |
The speed of the line (unit is baud, 0 is used for external clocking). |
WAN_interface |
The type of interface. Should always be set to WAN_V28 |
WAN_cptype |
The type of interface. Set this to WAN_NONE if no calling procedures are used (the most frequent case), or to WAN_V25bis if a calling procedure and V25bis modem are used. In this instance, the WAN_v25 structure must be filled. |