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); }
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; }