/usr/include
NameSizeModeActions
arpa/-0755rm
asm/-0755rm
asm-generic/-0755rm
bind9/-0755rm
bits/-0755rm
blkid/-0755rm
c++/-0755rm
drm/-0755rm
e2p/-0755rm
et/-0755rm
event2/-0755rm
ext2fs/-0755rm
finclude/-0755rm
fontconfig/-0755rm
freetype2/-0755rm
fstrm/-0755rm
gdbm/-0755rm
GL/-0755rm
gnu/-0755rm
google/-0755rm
gssapi/-0755rm
gssrpc/-0755rm
ImageMagick-6/-0755rm
json-c/-0755rm
kadm5/-0755rm
krb5/-0755rm
libdb/-0755rm
libexslt/-0755rm
libltdl/-0755rm
libpng16/-0755rm
libxml2/-0755rm
libxslt/-0755rm
linux/-0755rm
lzma/-0755rm
misc/-0755rm
mtd/-0755rm
mysql/-0755rm
ncurses/-0755rm
ncursesw/-0755rm
net/-0755rm
netash/-0755rm
netatalk/-0755rm
netax25/-0755rm
neteconet/-0755rm
netinet/-0755rm
netipx/-0755rm
netiucv/-0755rm
netpacket/-0755rm
netrom/-0755rm
netrose/-0755rm
nfs/-0755rm
openssl/-0755rm
perf/-0755rm
protobuf-c/-0755rm
protocols/-0755rm
python2.7/-0755rm
python3.6m/-0755rm
python3.12/-0755rm
rdma/-0755rm
rpc/-0755rm
scsi/-0755rm
security/-0755rm
selinux/-0755rm
sepol/-0755rm
sound/-0755rm
sys/-0755rm
uuid/-0755rm
video/-0755rm
webp/-0755rm
X11/-0755rm
xcb/-0755rm
xen/-0755rm
a.out.h43500644editdlrm
aio.h74560644editdlrm
aliases.h20310644editdlrm
alloca.h12030644editdlrm
ar.h17300644editdlrm
argp.h254140644editdlrm
argz.h60500644editdlrm
assert.h45610644editdlrm
autosprintf.h23830644editdlrm
byteswap.h14040644editdlrm
bzlib.h62450644editdlrm
complex.h71630644editdlrm
com_err.h21180644editdlrm
cpio.h22670644editdlrm
cpuidle.h8440644editdlrm
crypt.h91180644editdlrm
ctype.h109630644editdlrm
curses.h996250644editdlrm
cursesapp.h67750644editdlrm
cursesf.h278490644editdlrm
cursesm.h196770644editdlrm
cursesp.h86010644editdlrm
cursesw.h497190644editdlrm
cursslk.h73040644editdlrm
db.h1231050444editdlrm
dbm.h14140644editdlrm
db_185.h59830444editdlrm
dirent.h124840644editdlrm
dlfcn.h72380644editdlrm
elf.h1748280644editdlrm
endian.h31890644editdlrm
entities.h49300644editdlrm
envz.h28660644editdlrm
err.h22090644editdlrm
errno.h16780644editdlrm
error.h20390644editdlrm
eti.h28910644editdlrm
etip.h97020644editdlrm
evdns.h20190644editdlrm
event.h27440644editdlrm
evhttp.h20350644editdlrm
evrpc.h20150644editdlrm
evutil.h17820644editdlrm
execinfo.h15220644editdlrm
expat.h442730644editdlrm
expat_config.h39100644editdlrm
expat_external.h60290644editdlrm
fcntl.h109580644editdlrm
features.h160620644editdlrm
fenv.h58570644editdlrm
FlexLexer.h68930644editdlrm
fmtmsg.h32390644editdlrm
fnmatch.h22950644editdlrm
form.h186010644editdlrm
fpu_control.h35830644editdlrm
fstab.h31110644editdlrm
fstrm.h130170644editdlrm
fts.h83720644editdlrm
ftw.h52510644editdlrm
gconv.h40810644editdlrm
gcrypt.h703610644editdlrm
gd.h577770644editdlrm
gdbm.h103450644editdlrm
gdcache.h28980644editdlrm
gdfontg.h5530644editdlrm
gdfontl.h5510644editdlrm
gdfontmb.h5190644editdlrm
gdfonts.h5150644editdlrm
gdfontt.h5460644editdlrm
gdfx.h4970644editdlrm
gdpp.h521620644editdlrm
gd_color_map.h4780644editdlrm
gd_errors.h15030644editdlrm
gd_io.h31250644editdlrm
getopt.h14680644editdlrm
gettext-po.h155340644editdlrm
glob.h66140644editdlrm
gnu-versions.h23420644editdlrm
gnumake.h29120644editdlrm
gpg-error.h678790644editdlrm
gpgrt.h678790644editdlrm
grp.h66860644editdlrm
gshadow.h45280644editdlrm
gssapi.h1810644editdlrm
iconv.h18570644editdlrm
idn-free.h24720644editdlrm
idn-int.h200644editdlrm
idna.h35640644editdlrm
ieee754.h49100644editdlrm
ifaddrs.h28400644editdlrm
inttypes.h118920644editdlrm
jconfig-64.h22250644editdlrm
jconfig.h2460644editdlrm
jerror.h150880644editdlrm
jmorecfg.h150490644editdlrm
jpegint.h155860644editdlrm
jpeglib.h498750644editdlrm
kdb.h692850644editdlrm
keyutils.h76980644editdlrm
krad.h89330644editdlrm
krb5.h4020644editdlrm
langinfo.h178480644editdlrm
lastlog.h1260644editdlrm
libaio.h89370644editdlrm
libgen.h13850644editdlrm
libintl.h45790644editdlrm
libssh2.h540900644editdlrm
libssh2_publickey.h48040644editdlrm
libssh2_sftp.h157610644editdlrm
limits.h54120644editdlrm
link.h72180644editdlrm
locale.h76740644editdlrm
ltdl.h57090644editdlrm
lzma.h98170644editdlrm
malloc.h61020644editdlrm
math.h533180644editdlrm
mcheck.h24340644editdlrm
memory.h9550644editdlrm
menu.h121970644editdlrm
mntent.h33580644editdlrm
monetary.h18030644editdlrm
mqueue.h37590644editdlrm
ncurses.h996250644editdlrm
ncurses_dll.h42770644editdlrm
nc_tparm.h41970644editdlrm
ndbm.h24540644editdlrm
netdb.h280990644editdlrm
nl_types.h17520644editdlrm
nss.h18780644editdlrm
obstack.h213060644editdlrm
panel.h41230644editdlrm
paths.h29770644editdlrm
pcre.h317180644editdlrm
pcre2.h448020644editdlrm
pcre2posix.h58040644editdlrm
pcrecpp.h265290644editdlrm
pcrecpparg.h67830644editdlrm
pcreposix.h54520644editdlrm
pcre_scanner.h66000644editdlrm
pcre_stringpiece.h63120644editdlrm
png.h1441490644editdlrm
pngconf.h228450644editdlrm
pnglibconf.h75670644editdlrm
poll.h220644editdlrm
pr29.h21230644editdlrm
printf.h68000644editdlrm
proc_service.h34760644editdlrm
profile.h121540644editdlrm
pthread.h412690644editdlrm
pty.h15690644editdlrm
punycode.h93840644editdlrm
pwd.h61580644editdlrm
regex.h247150644editdlrm
regexp.h14470644editdlrm
resolv.h121530644editdlrm
re_comp.h9620644editdlrm
sched.h47320644editdlrm
search.h52230644editdlrm
semaphore.h23990644editdlrm
setjmp.h36690644editdlrm
sgtty.h13430644editdlrm
shadow.h54710644editdlrm
signal.h122430644editdlrm
spawn.h66900644editdlrm
stab.h2640644editdlrm
stdc-predef.h22890644editdlrm
stdint.h84690644editdlrm
stdio.h301680644editdlrm
stdio_ext.h27990644editdlrm
stdlib.h356530644editdlrm
string.h175870644editdlrm
stringprep.h82270644editdlrm
strings.h47520644editdlrm
syscall.h250644editdlrm
sysexits.h52320644editdlrm
syslog.h240644editdlrm
tar.h37850644editdlrm
term.h411900644editdlrm
termcap.h34730644editdlrm
termio.h2140644editdlrm
termios.h35980644editdlrm
term_entry.h87600644editdlrm
tgmath.h314890644editdlrm
threads.h66550644editdlrm
thread_db.h160230644editdlrm
tic.h136380644editdlrm
tiff.h359830644editdlrm
tiffconf-64.h34290644editdlrm
tiffconf.h2500644editdlrm
tiffio.h232270644editdlrm
tiffio.hxx17020644editdlrm
tiffvers.h4100644editdlrm
time.h103600644editdlrm
tld.h46500644editdlrm
ttyent.h24940644editdlrm
uchar.h20010644editdlrm
ucontext.h20360644editdlrm
ulimit.h15830644editdlrm
unctrl.h30990644editdlrm
unistd.h427380644editdlrm
utime.h15010644editdlrm
utmp.h32220644editdlrm
utmpx.h40990644editdlrm
values.h19550644editdlrm
verto-module.h66400644editdlrm
verto.h194370644editdlrm
wait.h220644editdlrm
wchar.h311110644editdlrm
wctype.h55480644editdlrm
wordexp.h25010644editdlrm
zconf.h162620644editdlrm
zlib.h962610644editdlrm
Edit: /usr/include/krad.h (8933B)
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* * Copyright 2013 Red Hat, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This API is not considered as stable as the main krb5 API. * * - We may make arbitrary incompatible changes between feature releases * (e.g. from 1.12 to 1.13). * - We will make some effort to avoid making incompatible changes for * bugfix releases, but will make them if necessary. */ #ifndef KRAD_H_ #define KRAD_H_ #include #include #include #include #define KRAD_PACKET_SIZE_MAX 4096 #define KRAD_SERVICE_TYPE_LOGIN 1 #define KRAD_SERVICE_TYPE_FRAMED 2 #define KRAD_SERVICE_TYPE_CALLBACK_LOGIN 3 #define KRAD_SERVICE_TYPE_CALLBACK_FRAMED 4 #define KRAD_SERVICE_TYPE_OUTBOUND 5 #define KRAD_SERVICE_TYPE_ADMINISTRATIVE 6 #define KRAD_SERVICE_TYPE_NAS_PROMPT 7 #define KRAD_SERVICE_TYPE_AUTHENTICATE_ONLY 8 #define KRAD_SERVICE_TYPE_CALLBACK_NAS_PROMPT 9 #define KRAD_SERVICE_TYPE_CALL_CHECK 10 #define KRAD_SERVICE_TYPE_CALLBACK_ADMINISTRATIVE 11 typedef struct krad_attrset_st krad_attrset; typedef struct krad_packet_st krad_packet; typedef struct krad_client_st krad_client; typedef unsigned char krad_code; typedef unsigned char krad_attr; /* Called when a response is received or the request times out. */ typedef void (*krad_cb)(krb5_error_code retval, const krad_packet *request, const krad_packet *response, void *data); /* * Called to iterate over a set of requests. Either the callback will be * called until it returns NULL, or it will be called with cancel = TRUE to * terminate in the middle of an iteration. */ typedef const krad_packet * (*krad_packet_iter_cb)(void *data, krb5_boolean cancel); /* * Code */ /* Convert a code name to its number. Only works for codes defined * by RFC 2875 or 2882. Returns 0 if the name was not found. */ krad_code krad_code_name2num(const char *name); /* Convert a code number to its name. Only works for attributes defined * by RFC 2865 or 2882. Returns NULL if the name was not found. */ const char * krad_code_num2name(krad_code code); /* * Attribute */ /* Convert an attribute name to its number. Only works for attributes defined * by RFC 2865. Returns 0 if the name was not found. */ krad_attr krad_attr_name2num(const char *name); /* Convert an attribute number to its name. Only works for attributes defined * by RFC 2865. Returns NULL if the name was not found. */ const char * krad_attr_num2name(krad_attr type); /* * Attribute set */ /* Create a new attribute set. */ krb5_error_code krad_attrset_new(krb5_context ctx, krad_attrset **set); /* Create a deep copy of an attribute set. */ krb5_error_code krad_attrset_copy(const krad_attrset *set, krad_attrset **copy); /* Free an attribute set. */ void krad_attrset_free(krad_attrset *set); /* Add an attribute to a set. */ krb5_error_code krad_attrset_add(krad_attrset *set, krad_attr type, const krb5_data *data); /* Add a four-octet unsigned number attribute to the given set. */ krb5_error_code krad_attrset_add_number(krad_attrset *set, krad_attr type, krb5_ui_4 num); /* Delete the specified attribute. */ void krad_attrset_del(krad_attrset *set, krad_attr type, size_t indx); /* Get the specified attribute. */ const krb5_data * krad_attrset_get(const krad_attrset *set, krad_attr type, size_t indx); /* * Packet */ /* Determine the bytes needed from the socket to get the whole packet. Don't * cache the return value as it can change! Returns -1 on EBADMSG. */ ssize_t krad_packet_bytes_needed(const krb5_data *buffer); /* Free a packet. */ void krad_packet_free(krad_packet *pkt); /* * Create a new request packet. * * This function takes the attributes specified in set and converts them into a * radius packet. The packet will have a randomized id. If cb is not NULL, it * will be called passing data as the argument to iterate over a set of * outstanding requests. In this case, the id will be both random and unique * across the set of requests. */ krb5_error_code krad_packet_new_request(krb5_context ctx, const char *secret, krad_code code, const krad_attrset *set, krad_packet_iter_cb cb, void *data, krad_packet **request); /* * Create a new response packet. * * This function is similar to krad_packet_new_requst() except that it crafts a * packet in response to a request packet. This new packet will borrow values * from the request such as the id and the authenticator. */ krb5_error_code krad_packet_new_response(krb5_context ctx, const char *secret, krad_code code, const krad_attrset *set, const krad_packet *request, krad_packet **response); /* * Decode a request radius packet from krb5_data. * * The resulting decoded packet will be a request packet stored in *reqpkt. * * If cb is NULL, *duppkt will always be NULL. * * If cb is not NULL, it will be called (with the data argument) to iterate * over a set of requests currently being processed. In this case, if the * packet is a duplicate of an already received request, the original request * will be set in *duppkt. */ krb5_error_code krad_packet_decode_request(krb5_context ctx, const char *secret, const krb5_data *buffer, krad_packet_iter_cb cb, void *data, const krad_packet **duppkt, krad_packet **reqpkt); /* * Decode a response radius packet from krb5_data. * * The resulting decoded packet will be a response packet stored in *rsppkt. * * If cb is NULL, *reqpkt will always be NULL. * * If cb is not NULL, it will be called (with the data argument) to iterate * over a set of requests awaiting responses. In this case, if the response * packet matches one of these requests, the original request will be set in * *reqpkt. */ krb5_error_code krad_packet_decode_response(krb5_context ctx, const char *secret, const krb5_data *buffer, krad_packet_iter_cb cb, void *data, const krad_packet **reqpkt, krad_packet **rsppkt); /* Encode packet. */ const krb5_data * krad_packet_encode(const krad_packet *pkt); /* Get the code for the given packet. */ krad_code krad_packet_get_code(const krad_packet *pkt); /* Get the specified attribute. */ const krb5_data * krad_packet_get_attr(const krad_packet *pkt, krad_attr type, size_t indx); /* * Client */ /* Create a new client. */ krb5_error_code krad_client_new(krb5_context kctx, verto_ctx *vctx, krad_client **client); /* Free the client. */ void krad_client_free(krad_client *client); /* * Send a request to a radius server. * * The remote host may be specified by one of the following formats: * - /path/to/unix.socket * - IPv4 * - IPv4:port * - IPv4:service * - [IPv6] * - [IPv6]:port * - [IPv6]:service * - hostname * - hostname:port * - hostname:service * * The timeout parameter (milliseconds) is the total timeout across all remote * hosts (when DNS returns multiple entries) and all retries. For stream * sockets, the retries parameter is ignored and no retries are performed. * * The cb function will be called with the data argument when either a response * is received or the request times out on all possible remote hosts. */ krb5_error_code krad_client_send(krad_client *rc, krad_code code, const krad_attrset *attrs, const char *remote, const char *secret, int timeout, size_t retries, krad_cb cb, void *data); #endif /* KRAD_H_ */