}
private AddressTracker(SimpleFieldSet fs, long lastBootID) throws FSParseException {
int version = fs.getInt("Version");
if(version != 2)
throw new FSParseException("Unknown Version "+version);
long savedBootID = fs.getLong("BootID");
if(savedBootID != lastBootID) throw new FSParseException("Unable to load address tracker table, assuming an unclean shutdown: Last ID was " +
lastBootID+" but stored "+savedBootID);
// Sadly we don't know whether there were packets arriving during the gap,
// and some insecure firewalls will use incoming packets to keep tunnels open
//timeDefinitelyNoPacketsReceived = fs.getLong("TimeDefinitelyNoPacketsReceived");
timeDefinitelyNoPacketsReceivedPeer = System.currentTimeMillis();