face: allow enabling/disabling congestion marking through config file

refs #4465

Change-Id: I888b83b1fdbe8e3fc36a902bf7af52147807d829
diff --git a/daemon/face/udp-factory.cpp b/daemon/face/udp-factory.cpp
index 2024cd6..0a377ab 100644
--- a/daemon/face/udp-factory.cpp
+++ b/daemon/face/udp-factory.cpp
@@ -80,6 +80,8 @@
   //   }
   // }
 
+  m_wantCongestionMarking = context.generalConfig.wantCongestionMarking;
+
   uint16_t port = 6363;
   bool enableV4 = false;
   bool enableV6 = false;
@@ -292,7 +294,7 @@
                                 ", endpoint already allocated for a UDP multicast face"));
   }
 
-  auto channel = std::make_shared<UdpChannel>(localEndpoint, idleTimeout);
+  auto channel = std::make_shared<UdpChannel>(localEndpoint, idleTimeout, m_wantCongestionMarking);
   m_channels[localEndpoint] = channel;
 
   return channel;
@@ -345,7 +347,9 @@
   ip::udp::socket txSock(getGlobalIoService());
   MulticastUdpTransport::openTxSocket(txSock, udp::Endpoint(localAddress, 0), netif);
 
-  auto linkService = make_unique<GenericLinkService>();
+  GenericLinkService::Options options;
+  options.allowCongestionMarking = m_wantCongestionMarking;
+  auto linkService = make_unique<GenericLinkService>(options);
   auto transport = make_unique<MulticastUdpTransport>(mcastEp, std::move(rxSock), std::move(txSock),
                                                       m_mcastConfig.linkType);
   auto face = make_shared<Face>(std::move(linkService), std::move(transport));