Example #1
0
void EthernetFrame::build(MacAddress& dstMac, MacAddress& srcMac, NetworkData* newPayload /* = 0 */,
	const PayloadType newPayloadType /* = Eth_MaxType */) {

	ACE_TRACE("EthernetFrame::build");
	throwIfInitialized();
	setInitialized_(true);

	if ( newPayload ) 
		setUnitLength(estimate_length(newPayload->getUnitLength(), preambleLength_, typeLen_));
	else
		setUnitLength(estimate_length(0, preambleLength_, typeLen_));
	
	if (preambleLength_ == LinuxTap) { setPreambleType(newPayloadType); }
	setDstAddr(dstMac);
	setSrcAddr(srcMac);
	setEtherType(newPayloadType);
	if ( newPayload) setPayload(newPayload);
}
Example #2
0
bool MakeLeftRules()
{
	RULELIST * Rules = klf.getRules();

	//vtERs.clear();
	for (EXPENDEDRULELIST::iterator it = vtERs.begin(); it != vtERs.end(); ++it) {
		structExpendedRule * r = &*it;
		delete r->match_pattern;
		delete r->vk;
		delete r->switches;
		delete r->regex;
	}

	vtERs.clear();

	for (RULELIST::iterator it = Rules->begin(); it != Rules->end(); it++) {
		std::wstring * str_in = new std::wstring;
		VIRTUALKEYS * vks = new VIRTUALKEYS;
		SWITCHES * sws = new SWITCHES;
		if (makeRegex(str_in, vks, sws, it->strInRule, wcslen((wchar_t*)it->strInRule))) {
			structExpendedRule er;

			er.match_pattern = str_in;
			er.vk = vks;
			er.switches = sws;

			er.estimated_length = estimate_length(str_in->c_str());
			extractCharClasses(str_in->c_str(), &er.cc);

			er.regex = new boost::wregex (str_in->c_str());

			er.rule_it = it;

			vtERs.push_back(er);
		}
	}
	vtERs.sort();
	vtERs.reverse();
	return true;
}