Contiki 3.x
llsec.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013, Hasso-Plattner-Institut.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the Institute nor the names of its contributors
14  * may be used to endorse or promote products derived from this software
15  * without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  * This file is part of the Contiki operating system.
30  *
31  */
32 
33 /**
34  * \file
35  * Link layer security header file.
36  * \author
37  * Konrad Krentz <konrad.krentz@gmail.com>
38  */
39 
40 /**
41  * \ingroup net
42  * \defgroup llsec Link Layer Security
43  *
44  * Layer for implementing link layer security.
45  *
46  * NETSTACK_LLSEC sits in between NETSTACK_MAC and NETSTACK_NETWORK
47  * protocols. All NETSTACK_MAC protocols invoke NETSTACK_LLSEC.input()
48  * for incoming packets. Likewise, all NETSTACK_NETWORK protocols
49  * invoke NETSTACK_LLSEC.send(...) for outgoing packets.
50  *
51  * @{
52  */
53 
54 #ifndef LLSEC_H_
55 #define LLSEC_H_
56 
57 #include "net/mac/mac.h"
58 
59 /**
60  * The structure of a link layer security driver.
61  */
62 struct llsec_driver {
63  char *name;
64 
65  /** Inits link layer security. */
66  void (* init)(void);
67 
68  /** Secures outgoing frames before passing them to NETSTACK_MAC. */
69  void (* send)(mac_callback_t sent_callback, void *ptr);
70 
71  /**
72  * Decrypts incoming frames;
73  * filters out injected or replayed frames.
74  */
75  void (* input)(void);
76 };
77 
78 #endif /* LLSEC_H_ */
79 
80 /** @} */
MAC driver header file
void(* input)(void)
Decrypts incoming frames; filters out injected or replayed frames.
Definition: llsec.h:75
void(* send)(mac_callback_t sent_callback, void *ptr)
Secures outgoing frames before passing them to NETSTACK_MAC.
Definition: llsec.h:69
The structure of a link layer security driver.
Definition: llsec.h:62
void(* init)(void)
Inits link layer security.
Definition: llsec.h:66