5 # The contents of this file are subject to the terms of the
6 # Common Development and Distribution License, Version 1.0 only
7 # (the "License"). You may not use this file except in compliance
10 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11 # or http://www.opensolaris.org/os/licensing.
12 # See the License for the specific language governing permissions
13 # and limitations under the License.
15 # When distributing Covered Code, include this CDDL HEADER in each
16 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17 # If applicable, add the following below this CDDL HEADER, with the
18 # fields enclosed by brackets "[]" replaced with your own identifying
19 # information: Portions Copyright [yyyy] [name of copyright owner]
24 #ident "%Z%%M% %I% %E% SMI"
26 # Copyright (c) 1996, by Sun Microsystems, Inc.
27 # All rights reserved.
29 # Awk code to handle the creation of the YP_MULTI_ entries
30 # in the hosts.byname map. Called by multi directly.
34 # Here we loop through the list of hostnames
35 # doing two separate things...
36 # First, we're building a list of hostnames
37 # for the current IP address ($1).
38 # Second, if we've seen a name before then
39 # we add the current address ($1) to a list
40 # of address associated with this particular
43 # Note, that we're pretty careful about keeping
44 # out duplicates (and this has a cost).
46 for (i =
2; i
<=
NF; i
++) {
47 # Make the namelist for this address
48 if (namelist
[$
1] ==
"") {
50 } else if (namelist
[$
1] == $i
) {
52 } else if (index(namelist
[$
1], $i
) ==
0) {
53 namelist
[$
1] = namelist
[$
1] " " $i
;
56 numnames =
split(namelist
[$
1], n
);
57 for (j =
1; j
<= numnames
; j
++) {
64 namelist
[$
1] = namelist
[$
1] " " $i
;
69 # Do we have an address for this name?
70 # If not, and it's not already there, add it.
73 } else if (index(addr
[$i
], $
1) ==
0) {
74 addr
[$i
] = addr
[$i
] "," $
1
80 # There are now a bunch o addresses in the addr
81 # array that are actually lists. We go through
82 # all of them here and build a list of hostname
83 # aliases into the namelist array.
86 if (index(addr
[host
], ",") ==
0)
88 numaddr =
split(addr
[host
], tmpaddr
, ",");
89 for (i =
1; i
<= numaddr
; i
++) {
90 numnames =
split(namelist
[tmpaddr
[i
]], tmpname
);
91 for (j =
1; j
<= numnames
; j
++) {
92 if (namelist
[addr
[host
]] ==
"") {
93 namelist
[addr
[host
]] = tmpname
[j
];
96 if (namelist
[addr
[host
]] == tmpname
[j
]) {
99 if (index(namelist
[addr
[host
]], tmpname
[j
]) ==
0) {
100 namelist
[addr
[host
]] = namelist
[addr
[host
]] " " tmpname
[j
];
104 for (k =
1; k
<= numnames
; k
++) {
105 if (tmpname
[j
] == tmpname
[k
]) {
111 namelist
[addr
[host
]] = namelist
[addr
[host
]] " " tmpname
[j
];
119 # Now do that funky output thang...
121 if (index(addr
[host
], ",")) {
124 printf("%s %s\t%s\n",
125 host
, addr
[host
], namelist
[addr
[host
]]);