Linux Kernel
3.7.1
|
#include <linux/if_ether.h>
Go to the source code of this file.
Data Structures | |
struct | llc_pdu_sn |
struct | llc_pdu_un |
struct | llc_xid_info |
struct | llc_frmr_info |
Macros | |
#define | LLC_PDU_LEN_I 4 /* header and 2 control bytes */ |
#define | LLC_PDU_LEN_S 4 |
#define | LLC_PDU_LEN_U 3 /* header and 1 control byte */ |
#define | LLC_GLOBAL_SAP 0xFF |
#define | LLC_NULL_SAP 0x00 /* not network-layer visible */ |
#define | LLC_MGMT_INDIV 0x02 /* station LLC mgmt indiv addr */ |
#define | LLC_MGMT_GRP 0x03 /* station LLC mgmt group addr */ |
#define | LLC_RDE_SAP 0xA6 /* route ... */ |
#define | LLC_ISO_RESERVED_SAP 0x02 |
#define | LLC_SAP_GROUP_DSAP 0x01 |
#define | LLC_SAP_RESP_SSAP 0x01 |
#define | LLC_PDU_GROUP_DSAP_MASK 0x01 |
#define | LLC_PDU_IS_GROUP_DSAP(pdu) ((pdu->dsap & LLC_PDU_GROUP_DSAP_MASK) ? 0 : 1) |
#define | LLC_PDU_IS_INDIV_DSAP(pdu) (!(pdu->dsap & LLC_PDU_GROUP_DSAP_MASK) ? 0 : 1) |
#define | LLC_PDU_CMD_RSP_MASK 0x01 |
#define | LLC_PDU_CMD 0 |
#define | LLC_PDU_RSP 1 |
#define | LLC_PDU_IS_CMD(pdu) ((pdu->ssap & LLC_PDU_RSP) ? 0 : 1) |
#define | LLC_PDU_IS_RSP(pdu) ((pdu->ssap & LLC_PDU_RSP) ? 1 : 0) |
#define | LLC_PDU_TYPE_I_MASK 0x01 /* 16-bit control field */ |
#define | LLC_PDU_TYPE_S_MASK 0x03 |
#define | LLC_PDU_TYPE_U_MASK 0x03 /* 8-bit control field */ |
#define | LLC_PDU_TYPE_MASK 0x03 |
#define | LLC_PDU_TYPE_I 0 /* first bit */ |
#define | LLC_PDU_TYPE_S 1 /* first two bits */ |
#define | LLC_PDU_TYPE_U 3 /* first two bits */ |
#define | LLC_PDU_TYPE_IS_I(pdu) ((!(pdu->ctrl_1 & LLC_PDU_TYPE_I_MASK)) ? 1 : 0) |
#define | LLC_PDU_TYPE_IS_U(pdu) (((pdu->ctrl_1 & LLC_PDU_TYPE_U_MASK) == LLC_PDU_TYPE_U) ? 1 : 0) |
#define | LLC_PDU_TYPE_IS_S(pdu) (((pdu->ctrl_1 & LLC_PDU_TYPE_S_MASK) == LLC_PDU_TYPE_S) ? 1 : 0) |
#define | LLC_U_PF_BIT_MASK 0x10 /* P/F bit mask */ |
#define | LLC_U_PF_IS_1(pdu) ((pdu->ctrl_1 & LLC_U_PF_BIT_MASK) ? 1 : 0) |
#define | LLC_U_PF_IS_0(pdu) ((!(pdu->ctrl_1 & LLC_U_PF_BIT_MASK)) ? 1 : 0) |
#define | LLC_U_PDU_CMD_MASK 0xEC /* cmd/rsp mask */ |
#define | LLC_U_PDU_CMD(pdu) (pdu->ctrl_1 & LLC_U_PDU_CMD_MASK) |
#define | LLC_U_PDU_RSP(pdu) (pdu->ctrl_1 & LLC_U_PDU_CMD_MASK) |
#define | LLC_1_PDU_CMD_UI 0x00 /* Type 1 cmds/rsps */ |
#define | LLC_1_PDU_CMD_XID 0xAC |
#define | LLC_1_PDU_CMD_TEST 0xE0 |
#define | LLC_2_PDU_CMD_SABME 0x6C /* Type 2 cmds/rsps */ |
#define | LLC_2_PDU_CMD_DISC 0x40 |
#define | LLC_2_PDU_RSP_UA 0x60 |
#define | LLC_2_PDU_RSP_DM 0x0C |
#define | LLC_2_PDU_RSP_FRMR 0x84 |
#define | LLC_XID_FMT_ID 0x81 /* first byte must be this */ |
#define | LLC_XID_CLASS_ZEROS_MASK 0xE0 /* these must be zeros */ |
#define | LLC_XID_CLASS_MASK 0x1F /* AND with byte to get below */ |
#define | LLC_XID_NULL_CLASS_1 0x01 /* if NULL LSAP...use these */ |
#define | LLC_XID_NULL_CLASS_2 0x03 |
#define | LLC_XID_NULL_CLASS_3 0x05 |
#define | LLC_XID_NULL_CLASS_4 0x07 |
#define | LLC_XID_NNULL_TYPE_1 0x01 /* if non-NULL LSAP...use these */ |
#define | LLC_XID_NNULL_TYPE_2 0x02 |
#define | LLC_XID_NNULL_TYPE_3 0x04 |
#define | LLC_XID_NNULL_TYPE_1_2 0x03 |
#define | LLC_XID_NNULL_TYPE_1_3 0x05 |
#define | LLC_XID_NNULL_TYPE_2_3 0x06 |
#define | LLC_XID_NNULL_ALL 0x07 |
#define | LLC_XID_RW_MASK 0xFE /* AND with value to get below */ |
#define | LLC_XID_MIN_RW 0x02 /* lowest-order bit always zero */ |
#define | LLC_2_SEQ_NBR_MODULO ((u8) 128) |
#define | LLC_I_GET_NS(pdu) (u8)((pdu->ctrl_1 & 0xFE) >> 1) |
#define | LLC_I_GET_NR(pdu) (u8)((pdu->ctrl_2 & 0xFE) >> 1) |
#define | LLC_I_PF_BIT_MASK 0x01 |
#define | LLC_I_PF_IS_0(pdu) ((!(pdu->ctrl_2 & LLC_I_PF_BIT_MASK)) ? 1 : 0) |
#define | LLC_I_PF_IS_1(pdu) ((pdu->ctrl_2 & LLC_I_PF_BIT_MASK) ? 1 : 0) |
#define | LLC_S_PDU_CMD_MASK 0x0C |
#define | LLC_S_PDU_CMD(pdu) (pdu->ctrl_1 & LLC_S_PDU_CMD_MASK) |
#define | LLC_S_PDU_RSP(pdu) (pdu->ctrl_1 & LLC_S_PDU_CMD_MASK) |
#define | LLC_2_PDU_CMD_RR 0x00 /* rx ready cmd */ |
#define | LLC_2_PDU_RSP_RR 0x00 /* rx ready rsp */ |
#define | LLC_2_PDU_CMD_REJ 0x08 /* reject PDU cmd */ |
#define | LLC_2_PDU_RSP_REJ 0x08 /* reject PDU rsp */ |
#define | LLC_2_PDU_CMD_RNR 0x04 /* rx not ready cmd */ |
#define | LLC_2_PDU_RSP_RNR 0x04 /* rx not ready rsp */ |
#define | LLC_S_PF_BIT_MASK 0x01 |
#define | LLC_S_PF_IS_0(pdu) ((!(pdu->ctrl_2 & LLC_S_PF_BIT_MASK)) ? 1 : 0) |
#define | LLC_S_PF_IS_1(pdu) ((pdu->ctrl_2 & LLC_S_PF_BIT_MASK) ? 1 : 0) |
#define | PDU_SUPV_GET_Nr(pdu) ((pdu->ctrl_2 & 0xFE) >> 1) |
#define | PDU_GET_NEXT_Vr(sn) (++sn & ~LLC_2_SEQ_NBR_MODULO) |
#define | FRMR_INFO_LENGTH 5 /* 5 bytes of information */ |
#define | FRMR_INFO_SET_REJ_CNTRL(info, rej_ctrl) |
#define | FRMR_INFO_SET_Vs(info, vs) (info->curr_ssv = (((u8) vs) << 1)) |
#define | FRMR_INFO_SET_Vr(info, vr) (info->curr_rsv = (((u8) vr) << 1)) |
#define | FRMR_INFO_SET_C_R_BIT(info, cr) (info->curr_rsv |= (((u8) cr) & 0x01)) |
#define | FRMR_INFO_SET_INVALID_PDU_CTRL_IND(info, ind) (info->ind_bits = ((info->ind_bits & 0xFE) | (((u8) ind) & 0x01))) |
#define | FRMR_INFO_SET_INVALID_PDU_INFO_IND(info, ind) (info->ind_bits = ( (info->ind_bits & 0xFD) | (((u8) ind) & 0x02))) |
#define | FRMR_INFO_SET_PDU_INFO_2LONG_IND(info, ind) (info->ind_bits = ( (info->ind_bits & 0xFB) | (((u8) ind) & 0x04))) |
#define | FRMR_INFO_SET_PDU_INVALID_Nr_IND(info, ind) (info->ind_bits = ( (info->ind_bits & 0xF7) | (((u8) ind) & 0x08))) |
#define | FRMR_INFO_SET_PDU_INVALID_Ns_IND(info, ind) (info->ind_bits = ( (info->ind_bits & 0xEF) | (((u8) ind) & 0x10))) |
Variables | |
struct llc_pdu_sn | __packed |
#define FRMR_INFO_SET_REJ_CNTRL | ( | info, | |
rej_ctrl | |||
) |
#define LLC_I_PF_IS_0 | ( | pdu | ) | ((!(pdu->ctrl_2 & LLC_I_PF_BIT_MASK)) ? 1 : 0) |
#define LLC_I_PF_IS_1 | ( | pdu | ) | ((pdu->ctrl_2 & LLC_I_PF_BIT_MASK) ? 1 : 0) |
#define LLC_MGMT_GRP 0x03 /* station LLC mgmt group addr */ |
#define LLC_MGMT_INDIV 0x02 /* station LLC mgmt indiv addr */ |
#define LLC_PDU_IS_CMD | ( | pdu | ) | ((pdu->ssap & LLC_PDU_RSP) ? 0 : 1) |
#define LLC_PDU_IS_GROUP_DSAP | ( | pdu | ) | ((pdu->dsap & LLC_PDU_GROUP_DSAP_MASK) ? 0 : 1) |
#define LLC_PDU_IS_INDIV_DSAP | ( | pdu | ) | (!(pdu->dsap & LLC_PDU_GROUP_DSAP_MASK) ? 0 : 1) |
#define LLC_PDU_IS_RSP | ( | pdu | ) | ((pdu->ssap & LLC_PDU_RSP) ? 1 : 0) |
#define LLC_PDU_TYPE_I_MASK 0x01 /* 16-bit control field */ |
#define LLC_PDU_TYPE_IS_I | ( | pdu | ) | ((!(pdu->ctrl_1 & LLC_PDU_TYPE_I_MASK)) ? 1 : 0) |
#define LLC_PDU_TYPE_IS_S | ( | pdu | ) | (((pdu->ctrl_1 & LLC_PDU_TYPE_S_MASK) == LLC_PDU_TYPE_S) ? 1 : 0) |
#define LLC_PDU_TYPE_IS_U | ( | pdu | ) | (((pdu->ctrl_1 & LLC_PDU_TYPE_U_MASK) == LLC_PDU_TYPE_U) ? 1 : 0) |
#define LLC_S_PDU_CMD | ( | pdu | ) | (pdu->ctrl_1 & LLC_S_PDU_CMD_MASK) |
#define LLC_S_PDU_RSP | ( | pdu | ) | (pdu->ctrl_1 & LLC_S_PDU_CMD_MASK) |
#define LLC_S_PF_IS_0 | ( | pdu | ) | ((!(pdu->ctrl_2 & LLC_S_PF_BIT_MASK)) ? 1 : 0) |
#define LLC_S_PF_IS_1 | ( | pdu | ) | ((pdu->ctrl_2 & LLC_S_PF_BIT_MASK) ? 1 : 0) |
#define LLC_U_PDU_CMD | ( | pdu | ) | (pdu->ctrl_1 & LLC_U_PDU_CMD_MASK) |
#define LLC_U_PDU_RSP | ( | pdu | ) | (pdu->ctrl_1 & LLC_U_PDU_CMD_MASK) |
#define LLC_U_PF_IS_0 | ( | pdu | ) | ((!(pdu->ctrl_1 & LLC_U_PF_BIT_MASK)) ? 1 : 0) |
#define LLC_U_PF_IS_1 | ( | pdu | ) | ((pdu->ctrl_1 & LLC_U_PF_BIT_MASK) ? 1 : 0) |
#define LLC_XID_CLASS_MASK 0x1F /* AND with byte to get below */ |
#define LLC_XID_CLASS_ZEROS_MASK 0xE0 /* these must be zeros */ |
#define LLC_XID_MIN_RW 0x02 /* lowest-order bit always zero */ |
#define LLC_XID_NNULL_TYPE_1 0x01 /* if non-NULL LSAP...use these */ |
#define LLC_XID_NULL_CLASS_1 0x01 /* if NULL LSAP...use these */ |
#define LLC_XID_RW_MASK 0xFE /* AND with value to get below */ |
#define PDU_GET_NEXT_Vr | ( | sn | ) | (++sn & ~LLC_2_SEQ_NBR_MODULO) |
llc_pdu_decode_pf_bit - extracs poll/final bit from LLC header : input skb that p/f bit must be extracted from it : poll/final bit (0 or 1)
This function extracts poll/final bit from LLC header (based on type of PDU). In I or S pdus, p/f bit is right bit of fourth byte in header. In U pdus p/f bit is fifth bit of third byte.
void llc_pdu_init_as_frmr_rsp | ( | struct sk_buff * | skb, |
struct llc_pdu_sn * | prev_pdu, | ||
u8 | f_bit, | ||
u8 | vs, | ||
u8 | vr, | ||
u8 | vzyxw | ||
) |
llc_pdu_init_as_frmr_rsp - builds FRMR response PDU : Address of the frame to build : The rejected PDU frame : The F bit to set in the PDU : tx state vari value for the data link conn at the rejecting LLC : rx state var value for the data link conn at the rejecting LLC : completely described in the IEEE Std 802.2 document (Pg 55)
Builds a pdu frame as a FRMR response.
pdu_set_pf_bit - sets poll/final bit in LLC header : input frame that p/f bit must be set into it. : poll/final bit (0 or 1).
This function sets poll/final bit in LLC header (based on type of PDU). in I or S pdus, p/f bit is right bit of fourth byte in header. in U pdus p/f bit is fifth bit of third byte.