• Hello MLAers! We've re-enabled auto-approval for accounts. If you are still waiting on account approval, please check this thread for more information.

AppleTalk games over the internet

bbraun

6502
I like playing the old multiplayer appletalk games, like http://macintoshgarden.org/games/nettrek. The problem is they are limited to local appletalk networks, and I couldn't find a good solution for getting these working over the internet. There's some information out there using netatalk to route appletalk over vtun interfaces to desired machines, but is rather involved for all parties wishing to participate.

So, I'm introducing this http://synack.net/~bbraun/abridge.html. It allows multiple people to connect to a server over TCP/IP and share AppleTalk with each other. More detail is available at the site. My testing is extremely limited at this point, but nbplkup is successful which is a good sign. I'd be very interested if anyone wanted to test or any feedback.

Thanks,

Rob

 
I have updated the version to 0.2. I tested tonight in an actual working setup over the internet using file sharing between an iBook G3 with OS9 (using a Tiger Pismo on wired ethernet as the bridge) and a Performa 630CD running System 7.6.1 (using a SnowLeopard macbook on wired ethernet as the bridge) with a hosted RHEL box as the server.

In testing this, I discovered the ethernet type checking code was wrong, which is why the bump to 0.2.

I'll work on setting up a test AppleTalk network here for people to connect to and test with.

Also keep in mind Apple Airport Extremes won't bridge AppleTalk packets between wired and wireless, so it's best to stick with wired everything if possible.

In order for the bridge to work on Tiger, a new version of libpcap is required, the version that comes with Tiger is too old. The new version of pcap is available here: http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz

Let me know if you run into problems.

Rob

http://synack.net/~bbraun/abridge-0.2.tar.gz

 
For anyone wishing to test this, I've setup a server at synack.net. I've connected a client over a low speed link (ISDN), which should be visible to anyone who connects.

 
Well, I tried compiling and installing libpcap-1.0.0.tar.gz and abridge-0.2.tar.gz on my G4 Sawtooth. (Which is running Tiger) But I'm having a bit of trouble.

/usr/bin/ld: Undefined symbols:_pcap_sendpacket

collect2: ld returned 1 exit status}
I assume this is happening because I haven't properly installed libpcap-1.0.0?

If so, would you mind guiding me through on how to install it properly on a Mac? :D

For libpcap-1.0.0 all I did was:

./configuremake

sudo make install
I'll reboot my G4 into Xubuntu and see what happens. ;) (And if all else fails, like getting netatalk on Xubuntu, I'll try Puppy Linux on my PC.)

PowerPup.
santamac.gif


 
Yeah, that error is from not having (or finding) the newer libpcap.

Unfortunately, the default install for libpcap is as a static library, which doesn't seem to get picked up with -L/usr/local/lib -lpcap. So, the following should build the bridge with the installed static library:

gcc -o toofar toofar.c -lpthread /usr/local/lib/libpcap.a

Rob

 
Thank you for your help! :D I've got it compiled now.... And it seems to be working... I had to use "en0" instead of "eth0" since that's what my built-in ethernet is named. But I couldn't find anything when running my PowerBook G3 in Mac OS 9. (Maybe because I was using wireless?) I'll try again tomorrow. (All with ethernet. ;) Or maybe even get another computer setup as a client/bridge and test it at home.)

btw, here are some fun multiplayer games for appletalk I've played:

http://www.ambrosiasw.com/games/avara/

http://www.nafindix.com/misc/noblematch.html

Oh I just remembered, I found this the other day:

http://www.dsitri.de/projects/mac06/mac06.html

Very interesting. Wonder if this would somehow allow abridge to run on mac os 7 & up? (Not without a LOT of work I know. :p )

 
I realized that it probably didn't work was because I don't have netatalk installed. :p So I started compiling it but I ran into more trouble... :(

In file included from ../../sys/netatalk/at.h:28,from ../../include/atalk/util.h:13,

from adv1tov2.c:28:

/usr/include/netat/appletalk.h:49: error: parse error before "ua_short"

/usr/include/netat/appletalk.h:50: error: parse error before "ua_long"

/usr/include/netat/appletalk.h:53: error: parse error before "at_net_al"

/usr/include/netat/appletalk.h:54: error: parse error before "at_net_unal"

/usr/include/netat/appletalk.h:57: error: parse error before "at_node"

/usr/include/netat/appletalk.h:58: error: parse error before "at_socket"

/usr/include/netat/appletalk.h:60: error: parse error before "at_net"

/usr/include/netat/appletalk.h:62: error: parse error before "u_char"

/usr/include/netat/appletalk.h:64: error: parse error before "atalk_node"

/usr/include/netat/appletalk.h:93: error: parse error before "u_short"

/usr/include/netat/appletalk.h:95: error: parse error before "socket"

/usr/include/netat/appletalk.h:95: error: 'socket' redeclared as different kind of symbol

/usr/include/sys/socket.h:576: error: previous declaration of 'socket' was here

/usr/include/netat/appletalk.h:103: error: parse error before "at_inet_t"

/usr/include/netat/appletalk.h:112: error: parse error before "u_short"

/usr/include/netat/appletalk.h:120: error: parse error before "u_char"

/usr/include/netat/appletalk.h:122: error: parse error before "sat_port"

/usr/include/netat/appletalk.h:125: error: parse error before '}' token

/usr/include/netat/appletalk.h:207: error: parse error before "u_char"

/usr/include/netat/appletalk.h:218: error: parse error before "u_char"

/usr/include/netat/appletalk.h:220: error: parse error before '}' token

/usr/include/netat/appletalk.h:224: error: parse error before "at_nvestr_t"

/usr/include/netat/appletalk.h:226: error: parse error before "zone"

/usr/include/netat/appletalk.h:232: error: parse error before "at_inet_t"

/usr/include/netat/appletalk.h:234: error: parse error before "enu_entity"

/usr/include/netat/appletalk.h:245: error: parse error before "u_char"

/usr/include/netat/appletalk.h:249: error: parse error before '}' token

In file included from ../../include/atalk/util.h:13,

from adv1tov2.c:28:

../../sys/netatalk/at.h:122: error: parse error before "u_char"

../../sys/netatalk/at.h:122: warning: no semicolon at end of struct or union

../../sys/netatalk/at.h:123: warning: data definition has no type or storage class

../../sys/netatalk/at.h:124: error: parse error before "nr_lastnet"

../../sys/netatalk/at.h:124: warning: data definition has no type or storage class

make[3]: *** [adv1tov2.o] Error 1

make[2]: *** [all-recursive] Error 1

make[1]: *** [all-recursive] Error 1

make: *** [all] Error 2
Sigh, if only I knew more. Or do I not even need it for Tiger? :p

Update: Okay, I recompiled the client with debug enabled, and it's definitely picking up the appletalk packets. :D So I guess it's just the fact the nobody else is connected to the server.

 
netatalk is not required.

I had a several hour power outage so I was not connected to the server. I've set it back up again for now.

 
Glad to hear your power is back. :D Sometimes blackouts aren't very fun. But I recall a few I had that were fun, gave the family an excuse to huddle together around the fireplace (it wasn't really cold, but it kept us toasty,) and use candles. And cook supper with a propane camping stove. :D

Well, After setting up four macs through wired and wireless. I have had some limited success! :D

Apparently I cannot see what you have bridged to the server, using Mac OS 9 anyway. Could have to do with something like what's mentioned in this topic.

But anyway, I connected three macs to the same network. My PowerMac G4 as a client/bridge, and my PowerBook G4 as the other. The two Appletalk computers were my PowerBook G3 and PowerBook 5300c. I had the 5300c connected to the PB G4's ethernet port using my ethernet-to-localtalk device and just told "toofar" to forward all packets on the ethernet port, since it was connected to the other macs wirelessly.

The PowerBook G3 and PowerBook 5300c were able to see each other, but it was really slow, trying to mount and view the folders. Actually, it was soo slow that I couldn't open the other's shared folder. Using Oxyd 3.8 they could see each other, but couldn't connect. And Per.Oxyd they couldn't see each other at all.

I will try other games later. Glad to see that it works! Somewhat, but still some progress!

I found some articles which may help, or not. Maybe ever so slightly. :p

http://sial.org/talks/centralized-printing/appletalk_seed_router.txt

http://osxfaq.com/man/3/nbp.ws

I also found this nifty little program, which easily dumps packets.

http://www.tastycocoabytes.com/_downloads/NetDumper.zip

 
I saw in the logs you successfully connected and exchanged packets.

Apparently I cannot see what you have bridged to the server, using Mac OS 9 anyway.
It'll just show up in the chooser under appletalk, assuming you've selected ethertalk as your appletalk device.

But anyway, I connected three macs to the same network. My PowerMac G4 as a client/bridge, and my PowerBook G4 as the other. The two Appletalk computers were my PowerBook G3 and PowerBook 5300c. I had the 5300c connected to the PB G4's ethernet port using my ethernet-to-localtalk device and just told "toofar" to forward all packets on the ethernet port, since it was connected to the other macs wirelessly.
The PowerBook G3 and PowerBook 5300c were able to see each other, but it was really slow, trying to mount and view the folders. Actually, it was soo slow that I couldn't open the other's shared folder. Using Oxyd 3.8 they could see each other, but couldn't connect. And Per.Oxyd they couldn't see each other at all.
This software should not affect local traffic. In theory with such a connection the PBG3 and 5300c should have been able to see an iBookG3 on my side of the connection. However, it sounds as if there is a local networking issue if the two are directly connected and are having problems. I have also not tested with the localtalk to ethertalk bridges.

There are several troubleshooting steps on the abridge page:

http://synack.net/~bbraun/abridge.html

 
I saw in the logs you successfully connected and exchanged packets.
Neato. :-D

It'll just show up in the chooser under appletalk, assuming you've selected ethertalk as your appletalk device.
Yeah, I was using chooser on both laptops, don't know why it wasn't showing.

This software should not affect local traffic. In theory with such a connection the PBG3 and 5300c should have been able to see an iBookG3 on my side of the connection. However, it sounds as if there is a local networking issue if the two are directly connected and are having problems. I have also not tested with the localtalk to ethertalk bridges.
I've been able to connect the two directly without having these issues, so it probably had something to do with my configuration.

abridge_layout.png


My guess it really got slow because it was doing a lot of loop-backs and traffic. (Both client being behind the same router to the internet.)

The PB G4 and PM G4 were both sending packets to the server, ignoring duplicates which the other repeated since they were on the same LAN. It was probably just creating a lot of appletalk traffic on the same network. So the PB G3 and PB 5300 had to filter though all that extra noise. Making it really slow. At least that's my theory.

No wait, The second appletalk network was on the PB G4's ethernet port, making the two networks completely separate. So... Must have been both clients being behind the same router, maybe using wireless contributed to the sluggishness.

If I had both clients connected to the internet separately, it probably would work a lot better. :D As to why I'm not seeing your iBook, I don't know. Unless, I need to open a specific port on my router. (Whichever port you set the server to, 1900 I think...)

Anyway, thanks for sharing this. Having a lot of fun! :rambo:

 
Back
Top