faction architectural changes

Eddie Kohler eddietwo at cag.lcs.mit.edu
Tue Apr 27 12:48:16 EDT 1999


Factions no longer have personalities, individual input and output ports
do. The relevant virtual function is

    void Faction::initial_personality(Vector<int> &in_pers, int in_offset,
				      Vector<int> &out_pers, int out_offset)
				const;

However, the default implementation of this uses the existing
default_personality() call and DTRT, so that you can opt to go about your
life as if nothing has changed.

Also, new functions have been added to give the router an idea of how
packets can move through the system. The functions are

    void Faction::forward_flow(int input_port, Bitvector &output_ports) const;
    void Faction::backward_flow(int output_port, Bitvector &input_ports) const;

The idea is this:

1. forward_flow(i, bv) makes bv a bitvector of length noutputs().
   The bit "bv[o]" is on IFF a packet which arrived on input "i" could
   conceivably flow through to output "o".

2. backward_flow(o, bv) makes bv a bitvector of length ninputs().
   The bit "bv[i]" is on IFF a packet which was output on output "o" could
   conceivably have been received on input "i".

Note that these two functions are independent of personality.

The default implementations of these functions always return all-one
bitvectors, which is the right thing for most existing factions.

The paper has been updated to reflect this.

love,
ed



More information about the click mailing list