00001 /* ==================================================================== 00002 * The Kannel Software License, Version 1.0 00003 * 00004 * Copyright (c) 2001-2008 Kannel Group 00005 * Copyright (c) 1998-2001 WapIT Ltd. 00006 * All rights reserved. 00007 * 00008 * Redistribution and use in source and binary forms, with or without 00009 * modification, are permitted provided that the following conditions 00010 * are met: 00011 * 00012 * 1. Redistributions of source code must retain the above copyright 00013 * notice, this list of conditions and the following disclaimer. 00014 * 00015 * 2. Redistributions in binary form must reproduce the above copyright 00016 * notice, this list of conditions and the following disclaimer in 00017 * the documentation and/or other materials provided with the 00018 * distribution. 00019 * 00020 * 3. The end-user documentation included with the redistribution, 00021 * if any, must include the following acknowledgment: 00022 * "This product includes software developed by the 00023 * Kannel Group (http://www.kannel.org/)." 00024 * Alternately, this acknowledgment may appear in the software itself, 00025 * if and wherever such third-party acknowledgments normally appear. 00026 * 00027 * 4. The names "Kannel" and "Kannel Group" must not be used to 00028 * endorse or promote products derived from this software without 00029 * prior written permission. For written permission, please 00030 * contact org@kannel.org. 00031 * 00032 * 5. Products derived from this software may not be called "Kannel", 00033 * nor may "Kannel" appear in their name, without prior written 00034 * permission of the Kannel Group. 00035 * 00036 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 00037 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00038 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00039 * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS 00040 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 00041 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 00042 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 00043 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 00044 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 00045 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 00046 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00047 * ==================================================================== 00048 * 00049 * This software consists of voluntary contributions made by many 00050 * individuals on behalf of the Kannel Group. For more information on 00051 * the Kannel Group, please see <http://www.kannel.org/>. 00052 * 00053 * Portions of this software are based upon software originally written at 00054 * WapIT Ltd., Helsinki, Finland for the Kannel project. 00055 */ 00056 00057 /* 00058 * radius_pdu.def - definitions of RADIUS Accounting PDU structure 00059 * 00060 * We implement a RADIUS accounting proxy to overcome the gap in the WAP 00061 * stack that no MSISDN numbers are transported. Basically this is needed 00062 * to map client IPs of the remote WAP/MMS clients to their MSISDN for various 00063 * purposes. Ie. for WAP application a special HTTP header is added to identify 00064 * the WAP client via it's MSISDN and to allow personalization of mobile content. 00065 * For Kannel's MMSC we need mapping of client IP to MSISDN numbers to replace 00066 * MMS "From:" header to the originator MSISDN. 00067 * 00068 * References: 00069 * RFC2865 "Remote Authentication Dial In User Service (RADIUS)" 00070 * RFC2866 "RADIUS Accounting" 00071 * 00072 * Stipe Tolj <stolj@wapme.de> 00073 */ 00074 00075 #ifndef PDU 00076 #error Macro PDU not defined. 00077 #endif 00078 00079 #ifndef INTEGER 00080 #error Macro INTEGER not defined. 00081 #endif 00082 00083 #ifndef OCTETS 00084 #error Macro OCTETS not defined. 00085 #endif 00086 00087 00088 /* 00089 * All RADIUS PDUs have a common header consisting of 20 octets: 00090 * 00091 * Code: 1 octet (identifies PDU type) 00092 * Identifier: 1 octet (sort of sequence number) 00093 * Length: 2 octets (full length of the PDU) 00094 * Authenticator: 16 octets containing the MD5 hash 00095 * 00096 * (see RFC2866, page 5) 00097 */ 00098 #ifdef HEADER 00099 #error Macro HEADER was already defined. 00100 #endif 00101 #define HEADER \ 00102 INTEGER(code, 1) \ 00103 INTEGER(identifier, 1) \ 00104 INTEGER(length, 2) \ 00105 OCTETS(authenticator, 16) 00106 00107 /* 00108 * Note: Remember that we only add attibutes that interest us for our RADIUS 00109 * accounting proxy. If you need more, then add them to the corresponding PDUs. 00110 */ 00111 00112 PDU(Accounting_Request, 00113 0x04, 00114 HEADER 00115 ) 00116 00117 PDU(Accounting_Response, 00118 0x05, 00119 HEADER 00120 ) 00121 00122 00123 #undef PDU 00124 #undef INTEGER 00125 #undef OCTETS 00126 #undef HEADER 00127