HEX
Server: Apache
System: Linux s198.coreserver.jp 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: nagasaki (10062)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: //usr/local/qlibs/man/socket_if.3
.TH qlibs: socket_if 3
.SH NAME
socket_if \- retrieve scope_id for interface name and vice versa
.SH SYNTAX
.B #include \(dqsocket_if.h\(dq

uint32 \fBsocket_getifidx\fP(const char *\fIifname\fR);

const char *\fBsocket_getifname\fP(uint32 \fIscope_id\fR);
.SH DESCRIPTION
.B socket_getifidx
returns the \fIscope_id\fR of an interface named as
.I ifname
typically ''eth0''. 

.B socket_getifname 
retrieves from the operating system's assigned
.I scope_id
the interface name
.IR ifname .
.SH INTERFACE_NAME VERSUS SCOPE_ID
For IPv6 LLU addresses an additional 
.I ifname
(interface name) has to be provided accompanying the IPv6 address:
.IR fe80::1%eth0 .
The operating systems rather uses
.I  scope_id
as index for
.IR ifname .

For global IPv6 and ULA addresses
.I ifname
can be set to 
.IR 0 .
Since IPv4 addresses on any interface are always unique,
simply use
.I 0
for all cases.
.SH BACKGROUND
Qlib's socket routines provide an easy API to setup 
TCP or UDP connections over IPv4 or IPv6 networks. Together with
Qlib's IP address parsing capabilities, a set of high-level
socket routines allow a common IPv4/IPv6 handling.
.SH SOCKET FILES
.TP 5
.B socket_bind.c
bind to or reuse the local IPv4/IPv6 address and port 
for a socket connection
.TP 5
.B socket_connect.c
attempts to setup a TCP or UDP client connection
.TP 5
.B socket_info.c
get local/remote IPv4/IPv6 address of socket
.TP 5
.B socket_recv.c
set up a receiving IPv4/IPv6 connection
.TP 5
.B socket_send.c
send UDP datagram over a IPv4 or IPv6 connection 
.TP 5
.B socket_setup.c
listen to and accept an IPv4/IPv6 TCP socket connection
.TP 5
.B socket_tcp.c
create a non-blocking TCP stream socket 
.TP 5
.B socket_udp.c
create a non-blocking UDP datagram socket 
.SH USAGE
Most of the above files include their IPv4 and 
IPv6 counterparts together with a combined usage 
requiring in addition a 
.I scope_id 
or simply
.IR 0 . 
IPv4 addresses are usually converted upon reading to 
IPv4-mapped IPv6 addresses using Qlib's IP address 
parsing functions. 
IPv4 and IPv6 socket calls - if required - 
need to be distinguished 
by the calling routines testing

.EX
  ip6_isv4mapped(ip)
.EE

Otherwise, the unified IPv6/IPv4 versions will be used.
.SH "SEE ALSO" 
socket_bind(3), 
socket_connect(3), 
socket_info(3), 
socket_recv(3), 
socket_send(3), 
socket_setup(3), 
socket_tcp(3), 
socket_udp(3)