ROHC compression/decompression library
d_udp_lite.h
Go to the documentation of this file.
00001 /*
00002  * This program is free software; you can redistribute it and/or modify
00003  * it under the terms of the GNU General Public License as published by
00004  * the Free Software Foundation; either version 2 of the License, or
00005  * (at your option) any later version.
00006  *
00007  * This program is distributed in the hope that it will be useful,
00008  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00009  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00010  * GNU General Public License for more details.
00011  *
00012  * You should have received a copy of the GNU General Public License
00013  * along with this program; if not, write to the Free Software
00014  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00015  */
00016 
00017 /**
00018  * @file d_udp_lite.h
00019  * @brief ROHC decompression context for the UDP-Lite profile.
00020  * @author Didier Barvaux <didier.barvaux@toulouse.viveris.com>
00021  * @author The hackers from ROHC for Linux
00022  */
00023 
00024 #ifndef D_UDP_LITE_H
00025 #define D_UDP_LITE_H
00026 
00027 #include <netinet/ip.h>
00028 #include <netinet/udp.h>
00029 
00030 #include "d_generic.h"
00031 #include "d_udp.h"
00032 #include "udp_lite.h"
00033 
00034 
00035 /**
00036  * @brief Define the UDP-Lite part of the decompression profile context.
00037  *
00038  * This object must be used with the generic part of the decompression
00039  * context d_generic_context.
00040  *
00041  * @see d_generic_context
00042  */
00043 struct d_udp_lite_context
00044 {
00045         /**
00046          * @brief Whether the UDP-Lite checksum coverage field is present or not
00047          *
00048          * Possible values are:
00049          *   -1 if not initialized
00050          *    0 if not present
00051          *    1 if present
00052          */
00053         int cfp;
00054 
00055         /**
00056          * @brief Whether the UDP-Lite checksum coverage field can be inferred
00057          *        or not
00058          *
00059          * Possible values are:
00060          *   -1 if not initialized
00061          *    0 if not present
00062          *    1 if present
00063          */
00064         int cfi;
00065 
00066         /**
00067          * @brief Checksum Coverage Extension
00068          *
00069          * Possible values are:
00070          *  - 0 if not present
00071          *  - PACKET_CCE if present and ON
00072          *  - PACKET_CCE_OFF if present and OFF
00073          */
00074         int cce_packet;
00075 };
00076 
00077 
00078 /*
00079  * Public function prototypes.
00080  */
00081 
00082 int udp_lite_decode_dynamic_udp(struct d_generic_context *context,
00083                                 const unsigned char *packet,
00084                                 unsigned int length,
00085                                 unsigned char *dest);
00086 
00087 int udp_lite_build_uncompressed_udp(struct d_generic_context *context,
00088                                     struct d_generic_changes *active,
00089                                     unsigned char *dest,
00090                                     int payload_size);
00091 
00092 
00093 #endif
00094