Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #ifndef vnsw_agent_flow_handler_hpp 6 : #define vnsw_agent_flow_handler_hpp 7 : 8 : #include "pkt/proto_handler.h" 9 : 10 : static const std::string unknown_vn_ = "__UNKNOWN__"; 11 : 12 : struct PktInfo; 13 : class PktFlowInfo; 14 : 15 : class FlowHandler : public ProtoHandler { 16 : public: 17 47 : FlowHandler(Agent *agent, boost::shared_ptr<PktInfo> info, 18 47 : boost::asio::io_context &io, FlowProto *proto, uint16_t index) : 19 47 : ProtoHandler(agent, info, io), flow_proto_(proto), 20 47 : flow_table_index_(index) { 21 47 : } 22 94 : virtual ~FlowHandler() {} 23 : 24 : bool Run(); 25 : 26 42 : static const std::string UnknownVn() { return unknown_vn_; } 27 40 : static const VnListType UnknownVnList() { 28 40 : VnListType unknown_vn_list; 29 40 : unknown_vn_list.insert(unknown_vn_); 30 40 : return unknown_vn_list; 31 0 : } 32 2 : static const std::string LinkLocalVn() { 33 2 : return Agent::GetInstance()->linklocal_vn_name(); 34 : } 35 : bool IsL3ModeFlow() const; 36 : 37 : private: 38 : FlowProto *flow_proto_; 39 : uint16_t flow_table_index_; 40 : }; 41 : 42 : #endif // vnsw_agent_flow_handler_hpp