cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

llc_s_ev.c (3613B)


      1/*
      2 * llc_s_ev.c - Defines SAP component events
      3 *
      4 * The followed event functions are SAP component events which are described
      5 * in 802.2 LLC protocol standard document.
      6 *
      7 * Copyright (c) 1997 by Procom Technology, Inc.
      8 *		 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br>
      9 *
     10 * This program can be redistributed or modified under the terms of the
     11 * GNU General Public License as published by the Free Software Foundation.
     12 * This program is distributed without any warranty or implied warranty
     13 * of merchantability or fitness for a particular purpose.
     14 *
     15 * See the GNU General Public License for more details.
     16 */
     17#include <linux/socket.h>
     18#include <net/sock.h>
     19#include <net/llc_if.h>
     20#include <net/llc_s_ev.h>
     21#include <net/llc_pdu.h>
     22
     23int llc_sap_ev_activation_req(struct llc_sap *sap, struct sk_buff *skb)
     24{
     25	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
     26
     27	return ev->type == LLC_SAP_EV_TYPE_SIMPLE &&
     28	       ev->prim_type == LLC_SAP_EV_ACTIVATION_REQ ? 0 : 1;
     29}
     30
     31int llc_sap_ev_rx_ui(struct llc_sap *sap, struct sk_buff *skb)
     32{
     33	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
     34	struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb);
     35
     36	return ev->type == LLC_SAP_EV_TYPE_PDU && LLC_PDU_IS_CMD(pdu) &&
     37	       LLC_PDU_TYPE_IS_U(pdu) &&
     38	       LLC_U_PDU_CMD(pdu) == LLC_1_PDU_CMD_UI ? 0 : 1;
     39}
     40
     41int llc_sap_ev_unitdata_req(struct llc_sap *sap, struct sk_buff *skb)
     42{
     43	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
     44
     45	return ev->type == LLC_SAP_EV_TYPE_PRIM &&
     46	       ev->prim == LLC_DATAUNIT_PRIM &&
     47	       ev->prim_type == LLC_PRIM_TYPE_REQ ? 0 : 1;
     48
     49}
     50
     51int llc_sap_ev_xid_req(struct llc_sap *sap, struct sk_buff *skb)
     52{
     53	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
     54
     55	return ev->type == LLC_SAP_EV_TYPE_PRIM &&
     56	       ev->prim == LLC_XID_PRIM &&
     57	       ev->prim_type == LLC_PRIM_TYPE_REQ ? 0 : 1;
     58}
     59
     60int llc_sap_ev_rx_xid_c(struct llc_sap *sap, struct sk_buff *skb)
     61{
     62	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
     63	struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb);
     64
     65	return ev->type == LLC_SAP_EV_TYPE_PDU && LLC_PDU_IS_CMD(pdu) &&
     66	       LLC_PDU_TYPE_IS_U(pdu) &&
     67	       LLC_U_PDU_CMD(pdu) == LLC_1_PDU_CMD_XID ? 0 : 1;
     68}
     69
     70int llc_sap_ev_rx_xid_r(struct llc_sap *sap, struct sk_buff *skb)
     71{
     72	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
     73	struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb);
     74
     75	return ev->type == LLC_SAP_EV_TYPE_PDU && LLC_PDU_IS_RSP(pdu) &&
     76	       LLC_PDU_TYPE_IS_U(pdu) &&
     77	       LLC_U_PDU_RSP(pdu) == LLC_1_PDU_CMD_XID ? 0 : 1;
     78}
     79
     80int llc_sap_ev_test_req(struct llc_sap *sap, struct sk_buff *skb)
     81{
     82	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
     83
     84	return ev->type == LLC_SAP_EV_TYPE_PRIM &&
     85	       ev->prim == LLC_TEST_PRIM &&
     86	       ev->prim_type == LLC_PRIM_TYPE_REQ ? 0 : 1;
     87}
     88
     89int llc_sap_ev_rx_test_c(struct llc_sap *sap, struct sk_buff *skb)
     90{
     91	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
     92	struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb);
     93
     94	return ev->type == LLC_SAP_EV_TYPE_PDU && LLC_PDU_IS_CMD(pdu) &&
     95	       LLC_PDU_TYPE_IS_U(pdu) &&
     96	       LLC_U_PDU_CMD(pdu) == LLC_1_PDU_CMD_TEST ? 0 : 1;
     97}
     98
     99int llc_sap_ev_rx_test_r(struct llc_sap *sap, struct sk_buff *skb)
    100{
    101	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
    102	struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb);
    103
    104	return ev->type == LLC_SAP_EV_TYPE_PDU && LLC_PDU_IS_RSP(pdu) &&
    105	       LLC_PDU_TYPE_IS_U(pdu) &&
    106	       LLC_U_PDU_RSP(pdu) == LLC_1_PDU_CMD_TEST ? 0 : 1;
    107}
    108
    109int llc_sap_ev_deactivation_req(struct llc_sap *sap, struct sk_buff *skb)
    110{
    111	struct llc_sap_state_ev *ev = llc_sap_ev(skb);
    112
    113	return ev->type == LLC_SAP_EV_TYPE_SIMPLE &&
    114	       ev->prim_type == LLC_SAP_EV_DEACTIVATION_REQ ? 0 : 1;
    115}