embedded IPsec source code documentation


esp.h

Go 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

Copyright 2003 by Christian Scheurer and Niklaus Schild