This ioctl turns on packet level tracing for a particular link or all configured links. Each incoming and outgoing X.25 packet will be sent up the stream on which the N_traceon ioctl was made.
This ioctl can have a serious impact on security. For this reason it can only be used by root.
The following structures are associated with this ioctl:
struct trc_regioc { uint8 all_links; /* Trace on all links */ uint8 spare[3]; /* for alignment */ uint32 linkid; /* Link */ uint8 level; /* Level of tracing required */ uint8 spare2[3]; /* for alignment */ uint32 active[MAX_LINKS+1]; /* tracing actively on */ };
The members of the trc_regioc structure are:
Table 7-35 trc_regioc fields
Member |
value |
---|---|
all_links |
Returns the linkids of all links for which tracing was activated in the active array. |
linkid |
Specify tracing for a particular link. |
level |
The level of tracing required. |
active |
Indicates that tracing is currently active. |
Each X.25 packet is preceded by a trc_ctl structure:
/* Types of tracing message */ #define TR_CTL 100 /* Basic */ #define TR_LLC2_DAT 101 /* Basic + LLC2 parameters */ #define TR_LAPB_DAT TR_CTL /* Basic for now */ #define TR_MLP_DAT TR_CTL /* Basic for now */ #define TR_X25_DAT TR_CTL /* Basic for now */ #define TR_DLPI 102 /* type used for tracing DLPI primitives */ /* Format for control part of trace messages */ struct trc_ctl { uint8 trc_prim; /* Trace msg identifier */ uint8 trc_mid; /* Id of protocol module */ uint16 trc_spare; /* for alignment */ uint32 trc_linkid; /* Link Id */ uint8 trc_rcv; /* Message tx or rx */ uint8 trc_spare2[3]; /* for alignment */ uint32 trc_time; /* Time stamp */ uint16 trc_seq; /* Message seq number */ };Table 7-36 trc_ctrl fields
Member |
Description |
---|---|
trc_prim |
Always set to TR_X25_DAT. |
trc_mid |
Always set to the module ID of the X.25 multiplexor (200). |
trc_linkid |
The link identifier |
trc_rcv |
Message receive or rx |
trc_time |
Time stamp |
trc_seq |
Message seq number |