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