RPC_SVC_ERR(3)
π RPC_SVC_ERR β bestie edition π
okay so this is RPC_SVC_ERR(3) from the Library Functions Manual, and it's literally the server-side error squad of the RPC library. if you're the one answering the calls instead of making them, this page is for you. π«Ά
β¨ NAME β¨
rpc_svc_err, svcerr_auth, svcerr_decode, svcerr_noproc, svcerr_noprog, svcerr_progvers, svcerr_systemerr, svcerr_weakauth β library routines for server side remote procedure call errors. that's the whole girl gang, all seven of them plus the group name π
πΈ SYNOPSIS πΈ
#include <rpc/rpc.h>
void
svcerr_auth(SVCXPRT *xprt, enum auth_stat why);
void
svcerr_decode(SVCXPRT *xprt);
void
svcerr_noproc(SVCXPRT *xprt);
void
svcerr_noprog(SVCXPRT *xprt);
void
svcerr_progvers(SVCXPRT *xprt, rpcvers_t low_vers, rpcvers_t high_vers);
void
svcerr_systemerr(SVCXPRT *xprt);
void
svcerr_weakauth(SVCXPRT *xprt);
look at them. all void, all taking an SVCXPRT *xprt. consistent queens. no return values, no drama, they just say what's wrong and move on. periodt. π
π¦ DESCRIPTION π¦
so these routines are part of the RPC library, which is the thing that lets C language programs make procedure calls on other machines across the network. yes, other machines. across the network. it's giving long distance relationship but make it syscalls. π
and these particular routines? they get called by the server side dispatch function whenever there's any kind of error in the transaction with the client. so like, the client asks for something, the server can't deliver, and instead of just ghosting π» the server politely sends back a little "bestie no" message using one of these. iconic behaviour honestly.
π Routines π
first things first: peep rpc(3) for the definition of the SVCXPRT data structure, because every single one of these takes one and you gotta know what you're holding. π
svcerr_auth()β called by a service dispatch routine that is refusing to perform a remote procedure call because of an authentication error. like, you didn't pass the vibe check, sorry babe. πsvcerr_decode()β called by a service dispatch routine that cannot successfully decode the remote arguments. seesvc_getargs()over inrpc_svc_reg(3)for the whole situation there. the args came in and they were simply not readable πsvcerr_noproc()β called by a service dispatch routine that does not implement the procedure number the caller is asking for. you asked for procedure #47 and this server does not know her. πsvcerr_noprog()β called when the desired program is not registered with the RPC package. heads up tho: service implementors usually do not need this routine. so like, it's here, it's slaying, but you probably won't be the one calling it. πsvcerr_progvers()β called when the desired version of a program is not registered with the RPC package. thelow_versargument is the lowest version number, andhigh_versis the highest version number. so you're telling the client the full range of what actually exists. and same note as above: service implementors usually do not need this routine either. πsvcerr_systemerr()β called by a service dispatch routine when it detects a system error that isn't covered by any particular protocol. the example they give: if a service can no longer allocate storage, it may call this routine. out of memory? out of options? this is the catch-all. π«svcerr_weakauth()β called by a service dispatch routine that refuses to perform a remote procedure call due to insufficient (but correct) authentication arguments. and here's the tea: the routine callssvcerr_auth(xprt, AUTH_TOOWEAK). so it's a little wrapper, a little shortcut, a little "you're valid but not valid enough" π
π AVAILABILITY π
these functions are part of libtirpc. that's where they live, that's where you link them from. π
β SEE ALSO β
go read them, they're all part of the same friend group. π
okay bestie that's the whole page!! this one shipped from Debian and it's dated May 3, 1993 β yes, 1993, this manual page is older than most of the internet and it's still out here serving β¨ vintage icon behaviour, no cap. love that for her. mwah π
π¦ where this page comes from
- alpine 3.22: libtirpc-doc 1.3.5-r0 Β· BSD-3-Clause
- alpine 3.23: libtirpc-doc 1.3.5-r1 Β· BSD-3-Clause
- alpine 3.24: libtirpc-doc 1.3.5-r1 Β· BSD-3-Clause
- arch rolling: libtirpc 1.3.8-1 Β· SISSL AND BSD-3-Clause
- centos-stream 10: libtirpc-devel 1.3.5-1.el10 Β· SISSL AND BSD-3-Clause
- centos-stream 9: libtirpc-devel 1.3.3-9.el9 Β· SISSL and BSD
- centos-stream 9: libtirpc-devel 1.3.3-9.el9 Β· SISSL and BSD
- debian bookworm: libtirpc-dev 1.3.3+ds-1 Β· BSD-3-Clause
- debian trixie: libtirpc-dev 1.3.6+ds-1 Β· BSD-3-Clause
- fedora 43: libtirpc-devel 1.3.7-0.fc43 Β· SISSL AND BSD-3-Clause
- fedora 43: libtirpc-devel 1.3.7-0.fc43 Β· SISSL AND BSD-3-Clause
- fedora 43: libtirpc-devel 1.3.7-1.rc1.fc43 Β· SISSL AND BSD-3-Clause
- fedora 43: libtirpc-devel 1.3.7-1.rc1.fc43 Β· SISSL AND BSD-3-Clause
- fedora 44: libtirpc-devel 1.3.7-2.fc44 Β· SISSL AND BSD-3-Clause
- fedora 44: libtirpc-devel 1.3.7-2.fc44 Β· SISSL AND BSD-3-Clause
- fedora 44: libtirpc-devel 1.3.8-0.fc44 Β· SISSL AND BSD-3-Clause
- fedora 44: libtirpc-devel 1.3.8-0.fc44 Β· SISSL AND BSD-3-Clause
- nixos 26.05: libtirpc 1.3.7
- nixpkgs unstable: libtirpc 1.3.7
- opensuse-leap 16.0: libtirpc-devel 1.3.6-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: libtirpc-devel 1.3.6-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: libtirpc-devel 1.3.6-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: libtirpc-devel 1.3.6-160000.2.2 Β· BSD-3-Clause
- ubuntu jammy: libtirpc-dev 1.3.2-2build1 Β· BSD-3-Clause
- ubuntu jammy: libtirpc-dev 1.3.2-2ubuntu0.1 Β· BSD-3-Clause
- ubuntu noble: libtirpc-dev 1.3.4+ds-1.1build1 Β· BSD-3-Clause
- ubuntu questing: libtirpc-dev 1.3.6+ds-1
- ubuntu resolute: libtirpc-dev 1.3.7-0.1 Β· BSD-3-Clause
- ubuntu stonking: libtirpc-dev 1.3.7+ds-1 Β· BSD-3-Clause
- Copyright 1989 AT&T
- Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms