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 : #include "base/util.h" 7 : #include "base/address_util.h" 8 : #include "xmpp/xmpp_config.h" 9 : #include "xmpp/xmpp_client.h" 10 : #include "xmpp/xmpp_init.h" 11 : #include "xmpp/xmpp_log.h" 12 : #include "xmpp/xmpp_server.h" 13 : #include "sandesh/sandesh_trace.h" 14 : #include "sandesh/xmpp_trace_sandesh_types.h" 15 : 16 : using namespace std; 17 : 18 : const char *XmppInit::kControlNodeJID = 19 : "network-control@contrailsystems.com"; 20 : const char *XmppInit::kAgentNodeJID = 21 : "agent@contrailsystems.com"; 22 : const char *XmppInit::kDnsNodeJID = 23 : "network-dns@contrailsystems.com"; 24 : const char *XmppInit::kPubSubNS = 25 : "http://jabber.org/protocol/pubsub"; 26 : const char *XmppInit::kJIDControlBgp = 27 : "network-control@contrailsystems.com/bgp-peer"; 28 : const char *XmppInit::kJIDControlDns = 29 : "network-control@contrailsystems.com/dns-peer"; 30 : const char *XmppInit::kFqnPrependAgentNodeJID = 31 : "default-global-system-config:"; 32 : const char *XmppInit::kConfigPeer = "config"; 33 : const char *XmppInit::kBgpPeer = "bgp-peer"; 34 : const char *XmppInit::kEndOfRibMarker = "0/0/EndOfRib"; 35 : const char *XmppInit::kDnsPeer = "dns-peer"; 36 : const char *XmppInit::kOtherPeer = "other-peer"; 37 : 38 : SandeshTraceBufferPtr XmppMessageTraceBuf(SandeshTraceBufferCreate(XMPP_MESSAGE_TRACE_BUF, 5000)); 39 : SandeshTraceBufferPtr XmppTraceBuf(SandeshTraceBufferCreate(XMPP_TRACE_BUF, 1000)); 40 : 41 4 : XmppInit::XmppInit() 42 4 : : g_server_(NULL), g_client_(NULL), cfg_(new XmppConfigData) { 43 4 : } 44 : 45 4 : XmppInit::~XmppInit() { 46 4 : if (g_client_) { 47 0 : g_client_->Shutdown(); 48 0 : TcpServerManager::DeleteServer(g_client_); 49 0 : g_client_ = NULL; 50 : } 51 : 52 4 : if (g_server_) { 53 0 : g_server_->Shutdown(); 54 0 : TcpServerManager::DeleteServer(g_server_); 55 0 : g_server_ = NULL; 56 : } 57 : 58 4 : if (cfg_) { 59 0 : delete cfg_; 60 0 : cfg_ = NULL; 61 : } 62 4 : } 63 : 64 4 : void XmppInit::Reset(bool keep_config) { 65 4 : g_server_ = NULL; 66 4 : g_client_ = NULL; 67 4 : if (!keep_config) { 68 4 : cfg_ = NULL; 69 : } 70 4 : } 71 : 72 4 : void XmppInit::InitClient(XmppClient *client) { 73 4 : g_client_ = client; 74 4 : g_client_->ConfigUpdate(cfg_); 75 4 : } 76 : 77 0 : bool XmppInit::InitServer(XmppServer *server, int port, bool logUVE) { 78 0 : g_server_ = server; 79 0 : return g_server_->Initialize(port, logUVE); 80 : } 81 : 82 0 : XmppChannelConfig *XmppInit::AllocChannelConfig( 83 : const string &peer_ip, int port, const string &from, const string &to, 84 : const string &node, bool isClient) { 85 0 : boost::system::error_code ec; 86 : boost::asio::ip::address peer_addr = 87 0 : AddressFromString(peer_ip, &ec); 88 0 : if (ec) { 89 0 : return NULL; 90 : } 91 0 : XmppChannelConfig *cc = new XmppChannelConfig(isClient); 92 0 : cc->endpoint.address(peer_addr); 93 0 : cc->endpoint.port(port); 94 0 : cc->ToAddr = to; 95 0 : cc->FromAddr = from; 96 0 : cc->NodeAddr = node; 97 0 : return cc; 98 : } 99 : 100 4 : void XmppInit::AddXmppChannelConfig(XmppChannelConfig *cc) { 101 4 : if (cc) { 102 4 : cfg_->AddXmppChannelConfig(cc); 103 : } 104 4 : return; 105 : }