1*29643adcSjakob /* $OpenBSD: radius.h,v 1.3 2001/08/21 06:21:29 jakob Exp $ */ 2cf4e9b47Sho 3e23fb7a7Stqbf /* RADIUS support for tcpdump, Thomas Ptacek <tqbf@enteract.com> */ 4e23fb7a7Stqbf 5*29643adcSjakob /* 6*29643adcSjakob * Copyright (c) 1997 Thomas H. Ptacek. All rights reserved. 7*29643adcSjakob * 8*29643adcSjakob * Redistribution and use in source and binary forms, with or without 9*29643adcSjakob * modification, are permitted provided that the following conditions 10*29643adcSjakob * are met: 11*29643adcSjakob * 12*29643adcSjakob * 1. Redistributions of source code must retain the above copyright 13*29643adcSjakob * notice, this list of conditions and the following disclaimer. 14*29643adcSjakob * 15*29643adcSjakob * 2. Redistributions in binary form must reproduce the above copyright 16*29643adcSjakob * notice, this list of conditions and the following disclaimer in the 17*29643adcSjakob * documentation and/or other materials provided with the distribution. 18*29643adcSjakob * 19*29643adcSjakob * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20*29643adcSjakob * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21*29643adcSjakob * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22*29643adcSjakob * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23*29643adcSjakob * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24*29643adcSjakob * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25*29643adcSjakob * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26*29643adcSjakob * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27*29643adcSjakob * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28*29643adcSjakob * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29*29643adcSjakob * 30*29643adcSjakob */ 31*29643adcSjakob 32e23fb7a7Stqbf /* ------------------------------------------------------------ */ 33e23fb7a7Stqbf 34e23fb7a7Stqbf /* RADIUS attribute encoding types */ 35e23fb7a7Stqbf 36e23fb7a7Stqbf #define RD_INT 1 37e23fb7a7Stqbf #define RD_DATE 2 38e23fb7a7Stqbf #define RD_ADDRESS 3 39e23fb7a7Stqbf #define RD_STRING 4 40e23fb7a7Stqbf #define RD_HEX 5 41e23fb7a7Stqbf 42e23fb7a7Stqbf /* ------------------------------------------------------------ */ 43e23fb7a7Stqbf 44e23fb7a7Stqbf /* RADIUS packet opcodes */ 45e23fb7a7Stqbf 46e23fb7a7Stqbf #define RADIUS_CODE_ACCESS_REQUEST 1 47e23fb7a7Stqbf #define RADIUS_CODE_ACCESS_ACCEPT 2 48e23fb7a7Stqbf #define RADIUS_CODE_ACCESS_REJECT 3 49e23fb7a7Stqbf #define RADIUS_CODE_ACCOUNT_REQUEST 4 50e23fb7a7Stqbf #define RADIUS_CODE_ACCOUNT_RESPONSE 5 51e23fb7a7Stqbf #define RADIUS_CODE_ACCOUNT_STATUS 6 52e23fb7a7Stqbf #define RADIUS_CODE_PASSCHG_REQUEST 7 53e23fb7a7Stqbf #define RADIUS_CODE_PASSCHG_ACCEPT 8 54e23fb7a7Stqbf #define RADIUS_CODE_PASSCHG_REJECT 9 55e23fb7a7Stqbf #define RADIUS_CODE_ACCOUNT_MESSAGE 10 56e23fb7a7Stqbf #define RADIUS_CODE_ACCESS_CHALLENGE 11 57e23fb7a7Stqbf 58e23fb7a7Stqbf /* ------------------------------------------------------------ */ 59e23fb7a7Stqbf 60e23fb7a7Stqbf /* slew o' attributes */ 61e23fb7a7Stqbf 62e23fb7a7Stqbf #define RADIUS_ATT_USER_NAME 1 63e23fb7a7Stqbf #define RADIUS_ATT_PASSWORD 2 64e23fb7a7Stqbf #define RADIUS_ATT_CHAP_PASS 3 65e23fb7a7Stqbf #define RADIUS_ATT_NAS_IP 4 66e23fb7a7Stqbf #define RADIUS_ATT_NAS_PORT 5 67e23fb7a7Stqbf #define RADIUS_ATT_USER_SERVICE 6 68e23fb7a7Stqbf #define RADIUS_ATT_PROTOCOL 7 69e23fb7a7Stqbf #define RADIUS_ATT_FRAMED_ADDRESS 8 70e23fb7a7Stqbf #define RADIUS_ATT_NETMASK 9 71e23fb7a7Stqbf #define RADIUS_ATT_ROUTING 10 72e23fb7a7Stqbf #define RADIUS_ATT_FILTER 11 73e23fb7a7Stqbf #define RADIUS_ATT_MTU 12 74e23fb7a7Stqbf #define RADIUS_ATT_COMPRESSION 13 75e23fb7a7Stqbf #define RADIUS_ATT_LOGIN_HOST 14 76e23fb7a7Stqbf #define RADIUS_ATT_LOGIN_SERVICE 15 77e23fb7a7Stqbf #define RADIUS_ATT_LOGIN_TCP_PORT 16 78e23fb7a7Stqbf #define RADIUS_ATT_OLD_PASSWORD 17 79e23fb7a7Stqbf #define RADIUS_ATT_PORT_MESSAGE 18 80e23fb7a7Stqbf #define RADIUS_ATT_DIALBACK_NO 19 81e23fb7a7Stqbf #define RADIUS_ATT_DIALBACK_NAME 20 82e23fb7a7Stqbf #define RADIUS_ATT_EXPIRATION 21 83e23fb7a7Stqbf #define RADIUS_ATT_FRAMED_ROUTE 22 84e23fb7a7Stqbf #define RADIUS_ATT_FRAMED_IPX 23 85e23fb7a7Stqbf #define RADIUS_ATT_CHALLENGE_STATE 24 86e23fb7a7Stqbf #define RADIUS_ATT_CLASS 25 87e23fb7a7Stqbf #define RADIUS_ATT_VENDOR_SPECIFIC 26 88e23fb7a7Stqbf #define RADIUS_ATT_SESSION_TIMEOUT 27 89e23fb7a7Stqbf #define RADIUS_ATT_IDLE_TIMEOUT 28 90e23fb7a7Stqbf #define RADIUS_ATT_TERMINATE_ACTION 29 91e23fb7a7Stqbf #define RADIUS_ATT_CALLED_ID 30 92e23fb7a7Stqbf #define RADIUS_ATT_CALLER_ID 31 93e23fb7a7Stqbf 94e23fb7a7Stqbf #define RADIUS_ATT_STATUS_TYPE 40 95e23fb7a7Stqbf 96e23fb7a7Stqbf /* the accounting attributes change way too much 97e23fb7a7Stqbf * for me to want to hardcode them in. 98e23fb7a7Stqbf */ 99e23fb7a7Stqbf 100e23fb7a7Stqbf /* ------------------------------------------------------------ */ 101e23fb7a7Stqbf 102e23fb7a7Stqbf /* RADIUS packet header */ 103e23fb7a7Stqbf 104e23fb7a7Stqbf #define RADFIXEDSZ 20 105e23fb7a7Stqbf 106e23fb7a7Stqbf struct radius_header { 107e23fb7a7Stqbf u_char code; 108e23fb7a7Stqbf u_char id; 109e23fb7a7Stqbf u_short len; 110e23fb7a7Stqbf u_char auth[16]; 111e23fb7a7Stqbf }; 112e23fb7a7Stqbf 113e23fb7a7Stqbf /* ------------------------------------------------------------ */ 114