Use the steps in this document to set up AppleTalk routing in Mac OS X.
If your network necessitates AppleTalk routing in Mac OS X, follow these steps to set it up. This technical document presumes some knowledge of AppleTalk routing on the part of the network administrator following these steps, particularly in terms of the selection of appropriate network numbers (Phase 3, Steps 8 and 9 of this document).
Note: Apple provides phone-based assistance implementing the steps in this article to customers who have a Mac OS X Server Support contract.
Important
1. Editing the /var/db/SystemConfiguration/preferences.xml file can completely disable networking. Only edit the backup copy, created in phase 1, below.
2. You will need an XML property editor application to complete these steps. One named PropertyListEditor is available as part of Apple's Developer Tools. These instructions assume you are using PropertyListEditor. If you use another, adapt your specific steps accordingly where required.
3. You must log in to your computer as the root user to complete these steps. The root user is enabled by default in Mac OS X Server. For more information on this topic, see technical document 106290: "Mac OS X 10.0: About the root User and How to Enable It"
Steps to set up AppleTalk routing
Phase 1: Create a copy of preferences.xml or preferences.plist file
Note: Mac OS X Server 10.2.8 and earlier store relevant settings in the file /var/db/SystemConfiguration/preferences.xml. Mac OS X Server 10.3 and later use the file /Library/Preferences/SystemConfiguration/preferences.plist.
1. Open System Preferences and click Network.
2. Set all networking options as appropriate for your network.
Important: For Mac OS X 10.0 to 10.1.5, be sure to select the checkbox for AppleTalk on each network interface to be used for AppleTalk routing. For Mac OS X 10.2 or later, you are not allowed to select AppleTalk on more than one interface. To compensate for that, Step 9 of Phase 2 (below) contains an additional action for Mac OS X 10.2 or later
3. Write down or type the name of the Location that is selected in the Network pane of System Preferences.
Note: This is a user-definable name that may be different for everyone. The default name is Automatic. Because this can be different for everyone, we refer to it later as "YourSet." When you are instructed to type YourSet, you actually should type the name that you have noted.
4. Quit System Preferences.
5. Choose Go to Folder from the Go menu.
6. For 10.2.8 or earlier, type: /var/db/SystemConfiguration/
For 10.3 or later, type: /Library/Preferences/SystemConfiguration/
7. Click Go. You should now see the either the preferences.xml or preferences.plist file in the Finder window.
8. Select the file.
9. Choose Duplicate from the File menu. You should now have a copy named "preferences copy.xml" or "preferences copy.plist".
Phase 2: Identifying services in the file
You must edit the file to enable AppleTalk routing. The file contains a listing of "sets," which appear as Locations in the Network pane of System Preferences.
1. Open the copy you made in an XML property editor.
2. Click the disclosure triangle next to Root.
3. Look in the Value column to the right of CurrentSet (Figure 1). You should see something like: /Sets/0
Note the number that follows "/Sets/" (0 in this example). This number will be used in Step 6.
Figure 1
4. Below CurrentSet in the list that appears, you should see NetworkServices and Sets.
5. Click the disclosure triangle to the left of Sets. One or more numerals should appear below Sets (Figure 2). These numerals are the sets.
Figure 2
6. Click the triangle to the left of whichever set is current, as determined in Step 3, to reveal its children. This will reveal Network and UserDefinedName. The string in the Value column for UserDefinedName should be YourSet, as noted in Phase 1. In the Figure 3 example, this would be "Automatic."
Figure 3
7. Click the disclosure triangle to the left of Network.
8. Click the disclosure triangle next to Service (Figure 4). These are links to the NetworkServices that this Set uses. These links must be followed to the correct NetworkService, which you will identify in Step 9. You can see the links by clicking the disclosure triangles next to the numbered NetworkServices listed below Service. You should see "__LINK__ " with a value similar to "/NetworkServices/0". The number following "/NetworkServices/" corresponds to the particular service that you will identify in the next step and ultimately edit.
Figure 4
9. The third line in your Property List should be NetWorkServices (directly below Root and CurrentSet). Click the disclosure triangle next to it. Disclose the NetworkServices/x that correspond to the services linked to the CurrentSet. For each network service, the value for UserDefinedName will correspond to port name as listed in Network pane of System Preferences. A service that has AppleTalk active will have a child named "AppleTalk," and AppleTalk will not have child named "__INACTIVE__" with a value of 1. In Figure 6 for example, AppleTalk is active on network service 1 but not on network service 2.
Important: For Mac OS X 10.2 and later, you must delete the _INACTIVE_ child from all NetworkServices that will have AppleTalk enabled.
Figure 5
You have now identified the network services linked to your current set. You will edit these in the next section.
Phase 3: Editing in services
For each network service (port) identified in Steps 8 and 9 of Phase 2, follow these steps:
Note: When instructed to type something in this section, do so with the same capitalization.
1. Double-click the value for ConfigMethod
2. In the field, type: SeedRouter
Select ConfigMethod and click New Sibling .
3. Name the new sibling: SeedNetworkRange
4. In the Class column to the right of SeedNetworkRange, click String and set the pop-up menu to Array.
5. Click the triangle to the left of SeedNetworkRange
6. Click New Child twice.
7. For each new child, change the Class from String to Number.
8. Set the value of child 0 to the starting network number.
9. Set the value of child 1 to the ending network number.
10. Select ConfigMethod and click New Sibling.
11. Set the name of the sibling to SeedZones.
12. Change the class of SeedZones to Array.
13. Click the triangle to left of SeedZones and add one child for each zone name.
14. Set the class for each child to String.
15. Set the value to the zone name.
Note: The default zone for that network is child 0.
To configure a port to be a non-seed router, just set the ConfigMethod to Router. There is no need to create the SeedZones or SeedNetworkRange. This information will be gleaned from another seed router on the network segment. This configuration will only work if there is another seed router on the same network segment.
To determine the home port, the ServiceOrder for IPv4 will be used and this is the order created by arranging the interfaces in Network Preferences. If the AppleTalk home port is to be different from the primary IP interface, an AppleTalk ServiceOrder must be created using the steps below.
Phase 4 (optional): Creating an AppleTalk ServiceOrder
1. In the Property List, go to /Sets/<set ID>/Network/Global
2. Be sure that Global is disclosed, then click New Child.
3. Set the name of the child to AppleTalk and its class to Dictionary.
4. Click AppleTalk and then click New Child.
5. Set the name of the child to ServiceOrder and its class to Array.
6. Click ServiceOrder and create a child for every network interface (port).
Note: Open /Sets/<set ID>/Network/Global/IPv4/ServiceOrder for an example.
7. Change the type of every child to String.
8. The values for these children are the Service IDs from the set, and not the NetworkServices numbers.
9. Enter the services in the preferred order. The port for child 0 is the home port for the server.
Phase 5: replacing the preferences.xml or preferences.plist file
Replace the original file with the copy you have edited, being sure to correct the name to match the original, and then restart. If everything is correct, the server should now be routing AppleTalk and appear in the zone that is child 0 of the SeedZones list for the port that is specified as child 0 in the AppleTalk ServiceOrder.
Figure 6 shows two ports set up as seed routers each advertising one zone. Just add more children to SeedZones to advertise more zones. Remember that SeedZone/0 is the default zone.
Figure 6
Figure 7 shows the AppleTalk Service Order being used. This shows that the value for ServiceOrder/0 is 2. Service/2 is a link to NetworkService/2 and NetworkService/2 is for PCI Ethernet Slot 2x4, Port 1. So this server's home port in card port 1 and it will appear in zone NAT 1.
Figure 7