xref: /freebsd/lib/libc/net/linkaddr.3 (revision 010b7c6c74c7382441b6b574b2741b61c4a6bcc4)
1.\" Copyright (c) 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" This code is derived from software contributed to Berkeley by
5.\" Donn Seeley at BSDI.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\" 1. Redistributions of source code must retain the above copyright
11.\"    notice, this list of conditions and the following disclaimer.
12.\" 2. Redistributions in binary form must reproduce the above copyright
13.\"    notice, this list of conditions and the following disclaimer in the
14.\"    documentation and/or other materials provided with the distribution.
15.\" 3. All advertising materials mentioning features or use of this software
16.\"    must display the following acknowledgement:
17.\"	This product includes software developed by the University of
18.\"	California, Berkeley and its contributors.
19.\" 4. Neither the name of the University nor the names of its contributors
20.\"    may be used to endorse or promote products derived from this software
21.\"    without specific prior written permission.
22.\"
23.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33.\" SUCH DAMAGE.
34.\"
35.\"     From: @(#)linkaddr.3	8.1 (Berkeley) 7/28/93
36.\"	$Id$
37.\"
38.Dd June 17, 1996
39.Dt LINK_ADDR 3
40.Os BSD 4.4
41.Sh NAME
42.Nm link_addr ,
43.Nm link_ntoa
44.Nd elementary address specification routines for link level access
45.Sh SYNOPSIS
46.Fd #include <sys/types.h>
47.Fd #include <sys/socket.h>
48.Fd #include <net/if_dl.h>
49.Ft void
50.Fn link_addr "const char *addr" "struct sockaddr_dl *sdl"
51.Ft char *
52.Fn link_ntoa "const struct sockaddr_dl *sdl"
53.Sh DESCRIPTION
54The routine
55.Fn link_addr
56interprets character strings representing
57link-level addresses, returning binary information suitable
58for use in system calls.
59The routine
60.Fn link_ntoa
61takes
62a link-level
63address and returns an
64.Tn ASCII
65string representing some of the information present,
66including the link level address itself, and the interface name
67or number, if present.
68This facility is experimental and is
69still subject to change.
70.Pp
71For
72.Fn link_addr ,
73the string
74.Fa addr
75may contain
76an optional network interface identifier of the form
77.Dq "name unit-number" ,
78suitable for the first argument to
79.Xr ifconfig 8 ,
80followed in all cases by a colon and
81an interface address in the form of
82groups of hexadecimal digits
83separated by periods.
84Each group represents a byte of address;
85address bytes are filled left to right from
86low order bytes through high order bytes.
87.Pp
88.\" A regular expression may make this format clearer:
89.\" .Bd -literal -offset indent
90.\" ([a-z]+[0-9]+:)?[0-9a-f]+(\e.[0-9a-f]+)*
91.\" .Ed
92.\" .Pp
93Thus
94.Li le0:8.0.9.13.d.30
95represents an ethernet address
96to be transmitted on the first Lance ethernet interface.
97.Pp
98The direct use of these functions is deprecated in favor of the
99.Xr addr2ascii 3
100interface; however, portable programs cannot rely on the latter as it is
101not yet widely implemented.
102.Sh RETURN VALUES
103.Fn link_ntoa
104always returns a null terminated string.
105.Fn link_addr
106has no return value.
107(See
108.Sx BUGS . )
109.Sh SEE ALSO
110.Xr addr2ascii 3
111.\" .Xr iso 4
112.Sh HISTORY
113The
114.Fn link_addr
115and
116.Fn link_ntoa
117functions appeared in
118.Bx 4.3 Reno  .
119.Sh BUGS
120The returned values for link_ntoa
121reside in a static memory area.
122.Pp
123The function
124.Fn link_addr
125should diagnose improperly formed input, and there should be an unambiguous
126way to recognize this.
127.Pp
128If the
129.Va sdl_len
130field of the link socket address
131.Fa sdl
132is 0,
133.Fn link_ntoa
134will not insert a colon before the interface address bytes.
135If this translated address is given to
136.Fn link_addr
137without inserting an initial colon,
138the latter will not interpret it correctly.
139