133a9b234SCy Schubert /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
233a9b234SCy Schubert /* lib/krad/code.c - RADIUS code name table for libkrad */
333a9b234SCy Schubert /*
433a9b234SCy Schubert * Copyright 2013 Red Hat, Inc. All rights reserved.
533a9b234SCy Schubert *
633a9b234SCy Schubert * Redistribution and use in source and binary forms, with or without
733a9b234SCy Schubert * modification, are permitted provided that the following conditions are met:
833a9b234SCy Schubert *
933a9b234SCy Schubert * 1. Redistributions of source code must retain the above copyright
1033a9b234SCy Schubert * notice, this list of conditions and the following disclaimer.
1133a9b234SCy Schubert *
1233a9b234SCy Schubert * 2. Redistributions in binary form must reproduce the above copyright
1333a9b234SCy Schubert * notice, this list of conditions and the following disclaimer in
1433a9b234SCy Schubert * the documentation and/or other materials provided with the
1533a9b234SCy Schubert * distribution.
1633a9b234SCy Schubert *
1733a9b234SCy Schubert * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
1833a9b234SCy Schubert * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1933a9b234SCy Schubert * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
2033a9b234SCy Schubert * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
2133a9b234SCy Schubert * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
2233a9b234SCy Schubert * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2333a9b234SCy Schubert * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
2433a9b234SCy Schubert * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
2533a9b234SCy Schubert * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
2633a9b234SCy Schubert * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2733a9b234SCy Schubert * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2833a9b234SCy Schubert */
2933a9b234SCy Schubert
3033a9b234SCy Schubert #include "internal.h"
3133a9b234SCy Schubert
3233a9b234SCy Schubert #include <string.h>
3333a9b234SCy Schubert
3433a9b234SCy Schubert static const char *codes[UCHAR_MAX] = {
3533a9b234SCy Schubert "Access-Request",
3633a9b234SCy Schubert "Access-Accept",
3733a9b234SCy Schubert "Access-Reject",
3833a9b234SCy Schubert "Accounting-Request",
3933a9b234SCy Schubert "Accounting-Response",
4033a9b234SCy Schubert "Accounting-Status",
4133a9b234SCy Schubert "Password-Request",
4233a9b234SCy Schubert "Password-Ack",
4333a9b234SCy Schubert "Password-Reject",
4433a9b234SCy Schubert "Accounting-Message",
4533a9b234SCy Schubert "Access-Challenge",
4633a9b234SCy Schubert "Status-Server",
4733a9b234SCy Schubert "Status-Client",
4833a9b234SCy Schubert NULL,
4933a9b234SCy Schubert NULL,
5033a9b234SCy Schubert NULL,
5133a9b234SCy Schubert NULL,
5233a9b234SCy Schubert NULL,
5333a9b234SCy Schubert NULL,
5433a9b234SCy Schubert NULL,
5533a9b234SCy Schubert "Resource-Free-Request",
5633a9b234SCy Schubert "Resource-Free-Response",
5733a9b234SCy Schubert "Resource-Query-Request",
5833a9b234SCy Schubert "Resource-Query-Response",
5933a9b234SCy Schubert "Alternate-Resource-Reclaim-Request",
6033a9b234SCy Schubert "NAS-Reboot-Request",
6133a9b234SCy Schubert "NAS-Reboot-Response",
6233a9b234SCy Schubert NULL,
6333a9b234SCy Schubert "Next-Passcode",
6433a9b234SCy Schubert "New-Pin",
6533a9b234SCy Schubert "Terminate-Session",
6633a9b234SCy Schubert "Password-Expired",
6733a9b234SCy Schubert "Event-Request",
6833a9b234SCy Schubert "Event-Response",
6933a9b234SCy Schubert NULL,
7033a9b234SCy Schubert NULL,
7133a9b234SCy Schubert NULL,
7233a9b234SCy Schubert NULL,
7333a9b234SCy Schubert NULL,
7433a9b234SCy Schubert "Disconnect-Request",
7533a9b234SCy Schubert "Disconnect-Ack",
7633a9b234SCy Schubert "Disconnect-Nak",
7733a9b234SCy Schubert "Change-Filters-Request",
7833a9b234SCy Schubert "Change-Filters-Ack",
7933a9b234SCy Schubert "Change-Filters-Nak",
8033a9b234SCy Schubert NULL,
8133a9b234SCy Schubert NULL,
8233a9b234SCy Schubert NULL,
8333a9b234SCy Schubert NULL,
8433a9b234SCy Schubert "IP-Address-Allocate",
8533a9b234SCy Schubert "IP-Address-Release",
8633a9b234SCy Schubert };
8733a9b234SCy Schubert
8833a9b234SCy Schubert krad_code
krad_code_name2num(const char * name)8933a9b234SCy Schubert krad_code_name2num(const char *name)
9033a9b234SCy Schubert {
9133a9b234SCy Schubert unsigned char i;
9233a9b234SCy Schubert
9333a9b234SCy Schubert for (i = 0; i < UCHAR_MAX; i++) {
9433a9b234SCy Schubert if (codes[i] == NULL)
9533a9b234SCy Schubert continue;
9633a9b234SCy Schubert
9733a9b234SCy Schubert if (strcmp(codes[i], name) == 0)
9833a9b234SCy Schubert return ++i;
9933a9b234SCy Schubert }
10033a9b234SCy Schubert
10133a9b234SCy Schubert return 0;
10233a9b234SCy Schubert }
10333a9b234SCy Schubert
10433a9b234SCy Schubert const char *
krad_code_num2name(krad_code code)10533a9b234SCy Schubert krad_code_num2name(krad_code code)
10633a9b234SCy Schubert {
10733a9b234SCy Schubert if (code == 0)
10833a9b234SCy Schubert return NULL;
10933a9b234SCy Schubert
11033a9b234SCy Schubert return codes[code - 1];
11133a9b234SCy Schubert }
112