@@ -44,37 +44,43 @@ CommandProcessor::advertiseAndInsertPrefix(const ndn::mgmt::ControlParametersBas
4444 const ndn::mgmt::CommandContinuation& done)
4545{
4646 const auto & castParams = static_cast <const ndn::nfd::ControlParameters&>(parameters);
47-
47+ // This is a bit of a hack, waiting on the work in #5348 to complete for full refactoring
48+ ndn::nfd::ControlParameters responseParams (castParams.wireEncode ());
49+ uint64_t responseFaceId = (castParams.hasFaceId () && castParams.getFaceId () > 0 )
50+ ? responseParams.getFaceId () : m_defaultResponseFaceId;
51+ responseParams.setFaceId (responseFaceId);
4852 // Only build a Name LSA if the added name is new
4953 if (m_namePrefixList.insert (castParams.getName ())) {
5054 NLSR_LOG_INFO (" Advertising name: " << castParams.getName ());
5155 m_lsdb.buildAndInstallOwnNameLsa ();
5256 if (castParams.hasFlags () && castParams.getFlags () == PREFIX_FLAG) {
5357 NLSR_LOG_INFO (" Saving name to the configuration file " );
54- if (afterAdvertise (castParams.getName ()) == true ) {
55- return done (ndn::nfd::ControlResponse (205 , " OK" ).setBody (parameters.wireEncode ()));
58+ auto [afterAdvertiseReturn, afterAdvertiseMessage] = afterAdvertise (castParams.getName ());
59+ if (afterAdvertiseReturn) {
60+ return done (ndn::nfd::ControlResponse (205 , afterAdvertiseMessage).setBody (responseParams.wireEncode ()));
5661 }
5762 else {
58- return done (ndn::nfd::ControlResponse (406 , " Failed to open configuration file. " )
59- .setBody (parameters .wireEncode ()));
63+ return done (ndn::nfd::ControlResponse (500 , afterAdvertiseMessage )
64+ .setBody (responseParams .wireEncode ()));
6065 }
6166 }
62- return done (ndn::nfd::ControlResponse (200 , " OK" ).setBody (parameters .wireEncode ()));
67+ return done (ndn::nfd::ControlResponse (200 , " OK" ).setBody (responseParams .wireEncode ()));
6368 }
6469 else {
6570 if (castParams.hasFlags () && castParams.getFlags () == PREFIX_FLAG) {
6671 // Save an already advertised prefix
6772 NLSR_LOG_INFO (" Saving an already advertised name: " << castParams.getName ());
68- if (afterAdvertise (castParams.getName ()) == true ) {
69- return done (ndn::nfd::ControlResponse (205 , " OK" ).setBody (parameters.wireEncode ()));
73+ auto [afterAdvertiseReturn, afterAdvertiseMessage] = afterAdvertise (castParams.getName ());
74+ if (afterAdvertiseReturn) {
75+ return done (ndn::nfd::ControlResponse (205 , afterAdvertiseMessage).setBody (responseParams.wireEncode ()));
7076 }
7177 else {
72- return done (ndn::nfd::ControlResponse (406 , " Prefix is already Saved/Failed to open configuration file. " )
73- .setBody (parameters .wireEncode ()));
78+ return done (ndn::nfd::ControlResponse (500 , afterAdvertiseMessage )
79+ .setBody (responseParams .wireEncode ()));
7480 }
7581 }
7682 return done (ndn::nfd::ControlResponse (204 , " Prefix is already advertised/inserted." )
77- .setBody (parameters .wireEncode ()));
83+ .setBody (responseParams .wireEncode ()));
7884 }
7985}
8086
@@ -83,36 +89,42 @@ CommandProcessor::withdrawAndRemovePrefix(const ndn::mgmt::ControlParametersBase
8389 const ndn::mgmt::CommandContinuation& done)
8490{
8591 const auto & castParams = static_cast <const ndn::nfd::ControlParameters&>(parameters);
86-
92+ // This is a bit of a hack, waiting on the work in #5348 to complete for full refactoring
93+ ndn::nfd::ControlParameters responseParams (castParams.wireEncode ());
94+ uint64_t responseFaceId = (castParams.hasFaceId () && castParams.getFaceId () > 0 )
95+ ? responseParams.getFaceId () : m_defaultResponseFaceId;
96+ responseParams.setFaceId (responseFaceId);
8797 // Only build a Name LSA if the added name is new
8898 if (m_namePrefixList.erase (castParams.getName ())) {
8999 NLSR_LOG_INFO (" Withdrawing/Removing name: " << castParams.getName ());
90100 m_lsdb.buildAndInstallOwnNameLsa ();
91101 if (castParams.hasFlags () && castParams.getFlags () == PREFIX_FLAG) {
92- if (afterWithdraw (castParams.getName ()) == true ) {
93- return done (ndn::nfd::ControlResponse (205 , " OK" ).setBody (parameters.wireEncode ()));
102+ auto [afterWithdrawReturn, afterWithdrawMessage] = afterWithdraw (castParams.getName ());
103+ if (afterWithdrawReturn) {
104+ return done (ndn::nfd::ControlResponse (205 , afterWithdrawMessage).setBody (responseParams.wireEncode ()));
94105 }
95106 else {
96- return done (ndn::nfd::ControlResponse (406 , " Failed to open configuration file. " )
97- .setBody (parameters .wireEncode ()));
107+ return done (ndn::nfd::ControlResponse (500 , afterWithdrawMessage )
108+ .setBody (responseParams .wireEncode ()));
98109 }
99110 }
100- return done (ndn::nfd::ControlResponse (200 , " OK" ).setBody (parameters .wireEncode ()));
111+ return done (ndn::nfd::ControlResponse (200 , " OK" ).setBody (responseParams .wireEncode ()));
101112 }
102113 else {
103114 if (castParams.hasFlags () && castParams.getFlags () == PREFIX_FLAG) {
104115 // Delete an already withdrawn prefix
105116 NLSR_LOG_INFO (" Deleting an already withdrawn name: " << castParams.getName ());
106- if (afterWithdraw (castParams.getName ()) == true ) {
107- return done (ndn::nfd::ControlResponse (205 , " OK" ).setBody (parameters.wireEncode ()));
117+ auto [afterWithdrawReturn, afterWithdrawMessage] = afterWithdraw (castParams.getName ());
118+ if (afterWithdrawReturn) {
119+ return done (ndn::nfd::ControlResponse (205 , afterWithdrawMessage).setBody (responseParams.wireEncode ()));
108120 }
109121 else {
110- return done (ndn::nfd::ControlResponse (406 , " Prefix is already deleted/Failed to open configuration file. " )
111- .setBody (parameters .wireEncode ()));
122+ return done (ndn::nfd::ControlResponse (500 , afterWithdrawMessage )
123+ .setBody (responseParams .wireEncode ()));
112124 }
113125 }
114126 return done (ndn::nfd::ControlResponse (204 , " Prefix is already withdrawn/removed." )
115- .setBody (parameters .wireEncode ()));
127+ .setBody (responseParams .wireEncode ()));
116128 }
117129}
118130
0 commit comments