I found a bug in the check for old remote time stamps. I found it by modifying fwknopd to show the "local" time and the remote time when it throws a "remote time stamp" message. The results are below:
Wed Sep 24 11:09:18 2008 [-] remote time stamp is older than 120 second max age. local: 1222268958, remote: 1222272559, diff: 3601
You can see that the timestamp of the log message is around 11:09am, the "local" timestamp given by perl's time() function is around 10:09am, and that of the remote system is around 11:09am.
The time() function shouldn't be used here because local time is needed. localtime() gives the intended result, it just needs to be converted to a Unix timestamp.