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