2 * lib/tr.c This file contains an implementation of the "Tokenring"
5 * Version: $Id: tr.c,v 1.8 2000/02/02 08:56:30 freitag Exp $
7 * Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
8 * Copyright 1993 MicroWalt Corporation
10 * This program is free software; you can redistribute it
11 * and/or modify it under the terms of the GNU General
12 * Public License as published by the Free Software
13 * Foundation; either version 2 of the License, or (at
14 * your option) any later version.
19 #include <asm/types.h>
20 #include <sys/types.h>
21 #include <sys/socket.h>
22 #include <net/if_arp.h>
23 #include <linux/if_tr.h>
30 #include "net-support.h"
31 #include "pathnames.h"
34 extern struct hwtype tr_hwtype
;
36 static char *pr_tr(unsigned char *ptr
)
40 snprintf(buff
, sizeof(buff
), "%02X:%02X:%02X:%02X:%02X:%02X",
41 (ptr
[0] & 0377), (ptr
[1] & 0377), (ptr
[2] & 0377),
42 (ptr
[3] & 0377), (ptr
[4] & 0377), (ptr
[5] & 0377)
48 static int in_tr(char *bufp
, struct sockaddr
*sap
)
54 sap
->sa_family
= tr_hwtype
.type
;
59 while ((*bufp
!= '\0') && (i
< TR_ALEN
)) {
64 else if (c
>= 'a' && c
<= 'f')
66 else if (c
>= 'A' && c
<= 'F')
70 fprintf(stderr
, _("in_tr(%s): invalid token ring address!\n"), orig
);
79 else if (c
>= 'a' && c
<= 'f')
81 else if (c
>= 'A' && c
<= 'F')
85 fprintf(stderr
, _("in_tr(%s): invalid token ring address!\n"), orig
);
90 *ptr
++ = (unsigned char) (val
& 0377);
93 /* We might get a semicolon here - not required. */
97 fprintf(stderr
, _("in_tr(%s): trailing : ignored!\n"),
106 /* That's it. Any trailing junk? */
107 if ((i
== TR_ALEN
) && (*bufp
!= '\0')) {
109 fprintf(stderr
, _("in_tr(%s): trailing junk!\n"), orig
);
115 fprintf(stderr
, "in_tr(%s): %s\n", orig
, pr_tr(sap
->sa_data
));
122 struct hwtype tr_hwtype
=
124 "tr", NULL
/* "16/4 Mbps Token Ring" */, ARPHRD_IEEE802
, TR_ALEN
,
127 #ifdef ARPHRD_IEEE802_TR
128 struct hwtype tr_hwtype1
=
130 "tr", NULL
/* "16/4 Mbps Token Ring" */, ARPHRD_IEEE802_TR
, TR_ALEN
,
136 #endif /* HAVE_HWTR */