|
|
This relates to the import/export directives of protocols.
Depending on what protocols support, they will normally have a single import/export policy list associated with them.
Each policy list is an instantiation of a policy, and thus it hold the specific code for this instantiation.
typedef set<uint32_t> TagSet | TagSet |
typedef map<string,TagSet*> TagMap | TagMap |
enum PolicyType { IMPORT, EXPORT } | PolicyType |
PolicyList (const string& p, PolicyType pt,
PolicyMap& pmap,
SetMap& smap, VarMap& vmap, string mod)
| PolicyList |
Parameters:
p | protocol for which this list applies. |
pt | the type of policy list [import/export]. |
pmap | the container of all policies. |
smap | the container of all sets. |
vmap | the VarMap. |
~PolicyList ()
| ~PolicyList |
void push_back (const string& policyname)
| push_back |
Append a policy to the list.
Parameters:
policyname | the name of the policy |
void compile_policy (PolicyStatement& ps,
Code::TargetSet& mod,
uint32_t& tagstart)
| compile_policy |
Compiles a specific policy.
Throws an exception on semantic / compile errors.
Parameters:
ps | policy to compile. |
mod | set filled with targets which are modified by compilation. |
tagstart | first policy tag available. |
void compile (Code::TargetSet& mod, uint32_t& tagstart)
| compile |
Compile all policies which were not previously compiled.
Throws an exception on semantic / compile errors.
Parameters:
mod | set filled with targets which are modified by compilation. |
tagstart | first policy tag available. |
string str ()
| str |
Returns: string representation of list
void link_code (Code& ret)
| link_code |
Link the all the code avialable in this policy list with code supplied.
The code supplied will normally contain a target, so only relevant code is linked.
Parameters:
ret | code to link with. |
void get_targets (Code::TargetSet& targets)
| get_targets |
Return all targets in this policy list.
Parameters:
targets | set filled with all targets in this policy instantiation. |
void get_redist_tags (const string& protocol, Code::TagSet& ts)
| get_redist_tags |
Return the policy tags used by a specific protocol for route redistribution.
Parameters:
protocol | protocol for which tags are requested. |
ts | set filled with policy-tags used by the protocol. |