source code documentationesp.hGo to the documentation of this file.00001 /* 00002 * embedded IPsec 00003 * Copyright (c) 2003 Niklaus Schild and Christian Scheurer, HTI Biel/Bienne 00004 * All rights reserved. 00005 * 00006 * Redistribution and use in source and binary forms, with or without modification, 00007 * are permitted provided that the following conditions are met: 00008 * 00009 * 1. Redistributions of source code must retain the above copyright notice, 00010 * this list of conditions and the following disclaimer. 00011 * 2. Redistributions in binary form must reproduce the above copyright notice, 00012 * this list of conditions and the following disclaimer in the documentation 00013 * and/or other materials provided with the distribution. 00014 * 3. The name of the author may not be used to endorse or promote products 00015 * derived from this software without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 00018 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 00019 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 00020 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00021 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 00022 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00023 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00024 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 00025 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 00026 * OF SUCH DAMAGE. 00027 * 00028 */ 00029 00043 #ifndef __ESP_H__ 00044 #define __ESP_H__ 00045 00046 #include "ipsec/sa.h" 00047 00048 #define IPSEC_ESP_IV_SIZE (8) 00049 #define IPSEC_ESP_SPI_SIZE (4) 00050 #define IPSEC_ESP_SEQ_SIZE (4) 00051 #define IPSEC_ESP_HDR_SIZE (IPSEC_ESP_SPI_SIZE+IPSEC_ESP_SEQ_SIZE) 00054 typedef struct ipsec_esp_header_struct 00055 { 00056 __u32 spi; 00057 __u32 sequence_number; 00058 } ipsec_esp_header; 00059 00060 00061 typedef struct esp_packet_struct 00062 { 00063 __u32 spi ; 00064 __u32 sequence ; 00065 __u8 data[1] ; 00066 } esp_packet ; 00067 00068 00069 extern __u32 ipsec_esp_bitmap; 00070 extern __u32 ipsec_esp_lastSeq; 00071 00072 ipsec_status ipsec_esp_decapsulate(ipsec_ip_header *packet, int *offset, int *len, sad_entry *sa) ; 00073 ipsec_status ipsec_esp_encapsulate(ipsec_ip_header *packet, int *offset, int *len, sad_entry *sa, __u32 src_addr, __u32 dest_addr) ; 00074 00075 #endif |