RDK Documentation (Open Sourced RDK Components)
hostIf_IPClient_ReqHandler.cpp
Go to the documentation of this file.
1 /*
2  * If not stated otherwise in this file or this component's Licenses.txt file the
3  * following copyright and licenses apply:
4  *
5  * Copyright 2016 RDK Management
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18 */
19 
20 /**
21  * @file hostIf_IPClient_ReqHandler.cpp
22  * @brief The header file provides HostIf IP client request handler information APIs.
23  */
24 
25 /**
26 * @defgroup tr69hostif
27 * @{
28 * @defgroup hostif
29 * @{
30 **/
31 
32 
33 //#define HAVE_VALUE_CHANGE_EVENT
34 #include "hostIf_main.h"
36 #include "Device_IP_ActivePort.h"
37 #include "Device_IP_Interface.h"
39 #ifdef SPEEDTEST_SUPPORT
40 #include "Device_IP_Diagnostics_SpeedTest.h"
41 #endif //SPEEDTEST_SUPPORT
42 #ifdef IPV6_SUPPORT
44 #endif // IPV6_SUPPORT
46 #include "Device_IP.h"
47 #include "Device_IP_Diagnostics_IPPing.h"
48 #include "safec_lib.h"
49 #include <mutex>
50 
51 std::mutex IPClientReqHandler::m_mutex;
52 IPClientReqHandler* IPClientReqHandler::pInstance = NULL;
53 updateCallback IPClientReqHandler::mUpdateCallback = NULL;
54 int IPClientReqHandler::curNumOfIPInterface = 0;
55 int IPClientReqHandler::curNumOfInterfaceIPv4Addresses[100] = {0,};
56 #ifdef IPV6_SUPPORT
57 int IPClientReqHandler::curNumOfInterfaceIPv6Addresses[100] = {0,};
58 int IPClientReqHandler::curNumOfInterfaceIPv6Prefixes[100] = {0,};
59 #endif // IPV6_SUPPORT
60 int IPClientReqHandler::curNumOfIPv4Interface[20] = {0,};
61 int IPClientReqHandler::curNumOfActivePorts[20] = {0,};
62 
63 IPClientReqHandler::IPClientReqHandler ()
64 {
65 }
66 
67 IPClientReqHandler::~IPClientReqHandler ()
68 {
69 }
70 
71 msgHandler* IPClientReqHandler::getInstance()
72 {
73  if(!pInstance)
74  pInstance = new IPClientReqHandler();
75  return pInstance;
76 }
77 
78 void IPClientReqHandler::reset()
79 {
80  std::lock_guard<std::mutex> lg (m_mutex);
81 
82  curNumOfIPInterface = 0;
83  memset (curNumOfInterfaceIPv4Addresses, 0, sizeof(curNumOfInterfaceIPv4Addresses));
84 #ifdef IPV6_SUPPORT
85  memset (curNumOfInterfaceIPv6Addresses, 0, sizeof(curNumOfInterfaceIPv6Addresses));
86  memset (curNumOfInterfaceIPv6Prefixes, 0, sizeof(curNumOfInterfaceIPv6Prefixes));
87 #endif // IPV6_SUPPORT
88  memset (curNumOfIPv4Interface, 0, sizeof(curNumOfIPv4Interface));
89  memset (curNumOfActivePorts, 0, sizeof(curNumOfActivePorts));
90 }
91 
92 /**
93  * @brief This function is used to initialize. Currently not implemented.
94  *
95  * @return Returns the status of the operation.
96  *
97  * @retval true if initialization is successful.
98  * @retval false if initialization is not successful.
99  * @ingroup TR-069HOSTIF_IPCLIENT_REQHANDLER_CLASSES
100  */
102 {
103  RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
104  RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
105  return true;
106 }
107 
108 /**
109  * @brief This function is used to close all the instances of IP interface, IP interface stats
110  * IPv4 Address, IPActivePort and IP.
111  *
112  * @return Returns the status of the operation.
113  *
114  * @retval true if it successfully close all the instances.
115  * @retval false if not able to close all the instances.
116  * @ingroup TR-069HOSTIF_IPCLIENT_REQHANDLER_CLASSES
117  */
119 {
120  RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
121 
122  hostIf_IPInterface::closeAllInstances();
123  hostIf_IPInterfaceStats::closeAllInstances();
124  hostIf_IPv4Address::closeAllInstances();
125  hostIf_IPActivePort::closeAllInstances();
126  hostIf_IP::closeAllInstances();
127 
128  RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
129  return true;
130 }
131 
132 /**
133  * @brief This function is used to handle the get message request of IP interface,
134  * IPv4Address, IPActivePort and IP. Gets the attribute of IP interface such as "BytesSent",
135  * "BytesReceived", "PacketsSent", "PacketsReceived" ect.. The attributes of IPv4Address such as
136  * "Enable", "IPv4Enable", "ULAEnable" etc..
137  *
138  * @param[out] stMsgData TR-069 Host interface message request.
139  *
140  * @return Returns the status of the operation.
141  *
142  * @retval OK if successful.
143  * @retval ERR_INTERNAL_ERROR if not able to set the data to the device.
144  * @ingroup TR-069HOSTIF_IPCLIENT_REQHANDLER_CLASSES
145  */
147 {
148  int ret = NOT_HANDLED;
149  const char *positionAfterInstanceNumber = 0;
150  int instanceNumber = 0;
151  HOSTIF_MsgData_t msgData;
152 
153 
154  int interfaceNumberOfEntries = 0;
155 
156  memset(&msgData,0,sizeof(msgData));
157 
158  std::lock_guard<std::mutex> lg (m_mutex);
159 
160  RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF, "[%s:%s:%d] Found string as %s\n", __FUNCTION__, __FILE__, __LINE__, stMsgData->paramName);
161 
162  if (matchComponent (stMsgData->paramName, "Device.IP.Interface", &positionAfterInstanceNumber, instanceNumber))
163  {
164  if (!instanceNumber)
165  return NOK;
166 
168  {
169  return NOK;
170  }
171 
172  interfaceNumberOfEntries = get_int (msgData.paramValue);
173 
174  if(instanceNumber > interfaceNumberOfEntries)
175  return NOK;
176 
177  stMsgData->instanceNum = instanceNumber;
178 
179 
180  const char *positionAfterSubInstanceNumber = 0;
181  int subInstanceNumber;
182 
183  if (strncasecmp (positionAfterInstanceNumber, "Stats", strlen ("Stats")) == 0)
184  {
185  hostIf_IPInterfaceStats* pIfaceStats = hostIf_IPInterfaceStats::getInstance (instanceNumber);
186  ret = pIfaceStats->handleGetMsg (positionAfterInstanceNumber, stMsgData);
187  }
188  else if (matchComponent (positionAfterInstanceNumber, "IPv4Address", &positionAfterSubInstanceNumber, subInstanceNumber))
189  {
190  hostIf_IPv4Address* pIfaceIPv4 = hostIf_IPv4Address::getInstance (instanceNumber);
191  if (!pIfaceIPv4)
192  return NOK;
193  ret = pIfaceIPv4->handleGetMsg (positionAfterSubInstanceNumber, subInstanceNumber, stMsgData);
194  }
195 #ifdef IPV6_SUPPORT
196  else if (matchComponent (positionAfterInstanceNumber, "IPv6Address", &positionAfterSubInstanceNumber, subInstanceNumber))
197  {
198  hostIf_IPv6Address* pIfaceIPv6 = hostIf_IPv6Address::getInstance (instanceNumber);
199  if (!pIfaceIPv6)
200  return NOK;
201  ret = pIfaceIPv6->handleGetMsg (positionAfterSubInstanceNumber, subInstanceNumber, stMsgData, true);
202  }
203  else if (matchComponent (positionAfterInstanceNumber, "IPv6Prefix", &positionAfterSubInstanceNumber, subInstanceNumber))
204  {
205  hostIf_IPv6Address* pIfaceIPv6 = hostIf_IPv6Address::getInstance (instanceNumber);
206  if (!pIfaceIPv6)
207  return NOK;
208  ret = pIfaceIPv6->handleGetMsg (positionAfterSubInstanceNumber, subInstanceNumber, stMsgData, false);
209  }
210 #endif // IPV6_SUPPORT
211  else
212  {
213  hostIf_IPInterface* pIface = hostIf_IPInterface::getInstance (instanceNumber);
214  if (!pIface)
215  return NOK;
216  ret = pIface->handleGetMsg (positionAfterInstanceNumber, stMsgData);
217  }
218  }
219  else if (strncasecmp (stMsgData->paramName, hostIf_IP_Diagnostics_IPPing::PROFILE_NAME, strlen (hostIf_IP_Diagnostics_IPPing::PROFILE_NAME)) == 0)
220  {
221  hostIf_IP_Diagnostics_IPPing& ipping = hostIf_IP_Diagnostics_IPPing::getInstance ();
222  ret = ipping.handleGetMsg (stMsgData);
223  }
224 #ifdef SPEEDTEST_SUPPORT
225  else if (strncasecmp (stMsgData->paramName, hostIf_IP_Diagnostics_SpeedTest::SpeedTestProfile, strlen (hostIf_IP_Diagnostics_SpeedTest::SpeedTestProfile)) == 0)
226  {
228  ret = spdtst.handleGetMsg (stMsgData);
229  }
230 #endif
231  else if (matchComponent (stMsgData->paramName, "Device.IP.ActivePort", &positionAfterInstanceNumber, instanceNumber))
232  {
233  stMsgData->instanceNum = instanceNumber;
234  hostIf_IPActivePort *pIfaceActivePort = hostIf_IPActivePort::getInstance (instanceNumber);
235  if (!pIfaceActivePort)
236  return NOK;
237  ret = pIfaceActivePort->handleGetMsg (positionAfterInstanceNumber, stMsgData);
238  }
239  else if (strncasecmp (stMsgData->paramName, "Device.IP", strlen ("Device.IP")) == 0)
240  {
241  stMsgData->instanceNum = instanceNumber;
242  hostIf_IP *pIPIface = hostIf_IP::getInstance (instanceNumber);
243  if (!pIPIface)
244  return NOK;
245  ret = pIPIface->handleGetMsg (stMsgData);
246  }
247  else
248  {
249  RDK_LOG(RDK_LOG_ERROR,LOG_TR69HOSTIF,"[%s:%d] Parameter : \'%s\' is Not Supported \n", __FUNCTION__, __LINE__, stMsgData->paramName);
250  stMsgData->faultCode = fcInvalidParameterName;
251  ret = NOK;
252  }
253 
254  return ret;
255 }
256 
257 /**
258  * @brief This function is used to handle the set message request of IP interface
259  * IPv4Address and IP. Gets the attribute of IP interface such as "Enable",
260  * "IPv4Enable", "Reset", "MaxMTUSize" . The attributes of IPv4Address such as
261  * "Enable", "SubnetMask" and "IPAddress".
262  *
263  * @param[out] stMsgData TR-069 Host interface message request.
264  *
265  * @return Returns the status of the operation.
266  *
267  * @retval OK if successful.
268  * @retval ERR_INTERNAL_ERROR if not able to set the data to the device.
269  * @ingroup TR-069HOSTIF_IPCLIENT_REQHANDLER_CLASSES
270  */
272 {
273  int ret = NOT_HANDLED;
274  const char *positionAfterInstanceNumber = 0;
275  int instanceNumber;
276 
277  RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF, "[%s:%s:%d] Found string as %s\n", __FUNCTION__, __FILE__, __LINE__, stMsgData->paramName);
278 
279  std::lock_guard<std::mutex> lg (m_mutex);
280 
281  if (matchComponent (stMsgData->paramName, "Device.IP.Interface", &positionAfterInstanceNumber, instanceNumber))
282  {
283  stMsgData->instanceNum = instanceNumber;
284  const char *positionAfterSubInstanceNumber = 0;
285  int subInstanceNumber;
286  if (matchComponent (positionAfterInstanceNumber, "IPv4Address", &positionAfterSubInstanceNumber, subInstanceNumber))
287  {
288  hostIf_IPv4Address* pIfaceIPv4 = hostIf_IPv4Address::getInstance (instanceNumber);
289  if (!pIfaceIPv4)
290  return NOK;
291  ret = pIfaceIPv4->handleSetMsg (positionAfterSubInstanceNumber, subInstanceNumber, stMsgData);
292  }
293 #ifdef IPV6_SUPPORT
294  else if (matchComponent (positionAfterInstanceNumber, "IPv6Address", &positionAfterSubInstanceNumber, subInstanceNumber))
295  {
296  hostIf_IPv6Address* pIfaceIPv6 = hostIf_IPv6Address::getInstance (instanceNumber);
297  if (!pIfaceIPv6)
298  return NOK;
299  ret = pIfaceIPv6->handleSetMsg (positionAfterSubInstanceNumber, subInstanceNumber, stMsgData, true);
300  }
301  else if (matchComponent (positionAfterInstanceNumber, "IPv6Prefix", &positionAfterSubInstanceNumber, subInstanceNumber))
302  {
303  hostIf_IPv6Address* pIfaceIPv6 = hostIf_IPv6Address::getInstance (instanceNumber);
304  if (!pIfaceIPv6)
305  return NOK;
306  ret = pIfaceIPv6->handleSetMsg (positionAfterSubInstanceNumber, subInstanceNumber, stMsgData, false);
307  }
308 #endif // IPV6_SUPPORT
309  else
310  {
311  hostIf_IPInterface *pIface = hostIf_IPInterface::getInstance (instanceNumber);
312  if (!pIface)
313  return NOK;
314 
315  ret = pIface->handleSetMsg (positionAfterInstanceNumber, stMsgData);
316  }
317  }
318  else if (strncasecmp (stMsgData->paramName, hostIf_IP_Diagnostics_IPPing::PROFILE_NAME, strlen (hostIf_IP_Diagnostics_IPPing::PROFILE_NAME)) == 0)
319  {
320  hostIf_IP_Diagnostics_IPPing& ipping = hostIf_IP_Diagnostics_IPPing::getInstance ();
321  ret = ipping.handleSetMsg (stMsgData);
322  }
323 #ifdef SPEEDTEST_SUPPORT
324  else if (strncasecmp (stMsgData->paramName, hostIf_IP_Diagnostics_SpeedTest::SpeedTestProfile, strlen (hostIf_IP_Diagnostics_SpeedTest::SpeedTestProfile)) == 0)
325  {
327  ret = spdtst.handleSetMsg (stMsgData);
328  }
329 #endif
330  else if (strncasecmp (stMsgData->paramName, "Device.IP", strlen ("Device.IP")))
331  {
332  stMsgData->instanceNum = instanceNumber;
333  hostIf_IP *pIPIface = hostIf_IP::getInstance (instanceNumber);
334  if (!pIPIface)
335  return NOK;
336  ret = pIPIface->handleSetMsg (stMsgData);
337  }
338  stMsgData->faultCode = (OK == ret)?fcNoFault:fcRequestDenied;
339  return ret;
340 }
341 
342 int IPClientReqHandler::handleGetAttributesMsg(HOSTIF_MsgData_t *stMsgData)
343 {
344  int ret = NOT_HANDLED;
345  int instanceNumber = 0;
346 
347  std::lock_guard<std::mutex> lg (m_mutex);
348 
349  hostIf_IP *pIface = hostIf_IP::getInstance(instanceNumber);
350  stMsgData->instanceNum = instanceNumber;
351  if(!pIface)
352  {
353  return NOK;
354  }
355 
356  GHashTable* notifyhash = pIface->getNotifyHash();
357  if(notifyhash != NULL)
358  {
359  int* notifyvalue = (int*) g_hash_table_lookup(notifyhash,stMsgData->paramName);
360  put_int(stMsgData->paramValue, *notifyvalue);
361  stMsgData->paramtype = hostIf_IntegerType;
362  ret = OK;
363  }
364  else
365  {
366  ret = NOK;
367  }
368 
369  return ret;
370 }
371 
372 int IPClientReqHandler::handleSetAttributesMsg(HOSTIF_MsgData_t *stMsgData)
373 {
374  int ret = NOT_HANDLED;
375  int instanceNumber = 0;
376  errno_t rc = -1;
377 
378  std::lock_guard<std::mutex> lg (m_mutex);
379 
380  hostIf_IP *pIface = hostIf_IP::getInstance(instanceNumber);
381  stMsgData->instanceNum = instanceNumber;
382  if(!pIface)
383  {
384  return NOK;
385  }
386  GHashTable* notifyhash = pIface->getNotifyHash();
387  if(notifyhash != NULL)
388  {
389  int *notifyValuePtr;
390  notifyValuePtr = (int*) malloc(1 * sizeof(int));
391 
392  // Inserting Notification parameter to Notify Hash Table,
393  // Note that neither keys nor values are copied when inserted into the GHashTable, so they must exist for the lifetime of the GHashTable
394  // There for allocating a memory for both Param name and param value. This should be freed whenever we disable Notification.
395  char *notifyKey = NULL;
396  notifyKey = (char*) calloc(sizeof(char),strlen(stMsgData->paramName)+1);
397  if((NULL != notifyValuePtr) && (NULL != notifyKey))
398  {
399  *notifyValuePtr = 1;
400  rc=strcpy_s(notifyKey,strlen(stMsgData->paramName)+1,stMsgData->paramName);
401  if(rc!=EOK)
402  {
403  ERR_CHK(rc);
404  }
405  g_hash_table_insert(notifyhash,notifyKey,notifyValuePtr);
406  ret = OK;
407  }
408  else
409  {
410  ret = NOK;
411  RDK_LOG(RDK_LOG_ERROR,LOG_TR69HOSTIF,"[%s:%s:%d] EthernetClientReqHandler Not able to allocate Notify pointer %s\n", __FUNCTION__, __FILE__, __LINE__, stMsgData->paramName);
412  }
413  free(notifyKey); //CID:85281 - Resource leak
414  free(notifyValuePtr);
415  }
416  else
417  {
418  ret = NOK;
419  RDK_LOG(RDK_LOG_ERROR,LOG_TR69HOSTIF,"[%s:%s:%d] EthernetClientReqHandler Not able to get notifyhash %s\n", __FUNCTION__, __FILE__, __LINE__, stMsgData->paramName);
420  }
421  return ret;
422 }
423 void IPClientReqHandler::registerUpdateCallback(updateCallback cb)
424 {
425  mUpdateCallback = cb;
426 }
427 
428 void IPClientReqHandler::checkForUpdates()
429 {
430  if (mUpdateCallback == 0)
431  return;
432 
433  HOSTIF_MsgData_t msgData;
434  bool bChanged;
435  GList *elem;
436  int index = 1;
437  char objectPath[TR69HOSTIFMGR_MAX_PARAM_LEN];
438 
439  hostIf_IP::getLock();
440 
441  RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,"[%s:%s:%d] \n",__FILE__, __FUNCTION__,__LINE__);
442 
443  memset(&msgData,0,sizeof(msgData));
444 
445  int interfaceNumberOfEntries = 0;
447  {
448  interfaceNumberOfEntries = get_int (msgData.paramValue);
449  RDK_LOG (RDK_LOG_DEBUG, LOG_TR69HOSTIF, "[%s:%s:%d] interfaceNumberOfEntries = %d, curNumOfIPInterface = %d\n",
450  __FILE__, __FUNCTION__, __LINE__, interfaceNumberOfEntries, curNumOfIPInterface);
451  sprintf (objectPath, "Device.IP.Interface.");
452  sendAddRemoveEvents (mUpdateCallback, interfaceNumberOfEntries, curNumOfIPInterface, objectPath);
453  }
454 
455  for (int i = 1; i <= interfaceNumberOfEntries; i++)
456  {
457  int ipv4AddressNumberOfEntries = hostIf_IPInterface::getInstance (i)->getIPv4AddressNumberOfEntries ();
458  RDK_LOG (RDK_LOG_DEBUG, LOG_TR69HOSTIF, "[%s:%s:%d] ipv4AddressNumberOfEntries = %d, curNumOfInterfaceIPv4Addresses[%d] = %d\n",
459  __FILE__, __FUNCTION__, __LINE__, ipv4AddressNumberOfEntries, i, curNumOfInterfaceIPv4Addresses[i]);
460  sprintf (objectPath, "Device.IP.Interface.%d.IPv4Address.", i);
461  sendAddRemoveEvents (mUpdateCallback, ipv4AddressNumberOfEntries, curNumOfInterfaceIPv4Addresses[i], objectPath);
462 
463 #ifdef IPV6_SUPPORT
464  int ipv6AddressNumberOfEntries = hostIf_IPInterface::getInstance (i)->getIPv6AddressNumberOfEntries ();
465  RDK_LOG (RDK_LOG_DEBUG, LOG_TR69HOSTIF, "[%s:%s:%d] ipv6AddressNumberOfEntries = %d, curNumOfInterfaceIPv6Addresses[%d] = %d\n",
466  __FILE__, __FUNCTION__, __LINE__, ipv6AddressNumberOfEntries, i, curNumOfInterfaceIPv6Addresses[i]);
467  sprintf (objectPath, "Device.IP.Interface.%d.IPv6Address.", i);
468  sendAddRemoveEvents (mUpdateCallback, ipv6AddressNumberOfEntries, curNumOfInterfaceIPv6Addresses[i], objectPath);
469 
470  int ipv6PrefixNumberOfEntries = hostIf_IPInterface::getInstance (i)->getIPv6PrefixNumberOfEntries ();
471  RDK_LOG (RDK_LOG_DEBUG, LOG_TR69HOSTIF, "[%s:%s:%d] ipv6PrefixNumberOfEntries = %d, curNumOfInterfaceIPv6Prefixes[%d] = %d\n",
472  __FILE__, __FUNCTION__, __LINE__, ipv6PrefixNumberOfEntries, i, curNumOfInterfaceIPv6Prefixes[i]);
473  sprintf (objectPath, "Device.IP.Interface.%d.IPv6Prefix.", i);
474  sendAddRemoveEvents (mUpdateCallback, ipv6PrefixNumberOfEntries, curNumOfInterfaceIPv6Prefixes[i], objectPath);
475 
476 #endif // IPV6_SUPPORT
477  }
478 
479  hostIf_IP::releaseLock();
480 
481 #ifdef HAVE_ADD_REMOVE_EVENT
482 
483  hostIf_IP::getLock();
484 
485  index = 1;
486 
487  memset(&msgData,0,sizeof(msgData));
488 
490  {
491  int activePortNumberOfEntries = get_int (msgData.paramValue);
492  sprintf (objectPath, "Device.IP.ActivePort.");
493  sendAddRemoveEvents (mUpdateCallback, activePortNumberOfEntries, curNumOfActivePorts[index], objectPath);
494  }
495 
496  hostIf_IP::releaseLock();
497 
498 #endif /*HAVE_ADD_REMOVE_EVENT */
499 
500 #ifdef HAVE_VALUE_CHANGE_EVENT
501 
502  std::lock_guard<std::mutex> lg (m_mutex);
503 
504  int instanceNumber = 0;
505  GHashTable* notifyhash = NULL;
506 
507 
508  //Get Notify Hash from device Info
509  hostIf_IP *dIface = hostIf_IP::getInstance(instanceNumber);
510  if(NULL != dIface)
511  {
512  notifyhash = dIface->getNotifyHash();
513  }
514  else
515  {
516  RDK_LOG(RDK_LOG_ERROR,LOG_TR69HOSTIF,"[%s:%s] Unable to get Device IP Instance\n", __FUNCTION__, __FILE__);
517  }
518 
519  // Iterate through Ghash Table
520  if(NULL != notifyhash)
521  {
522  GHashTableIter notifyHashIterator;
523  gpointer paramName;
524  gpointer notifyEnable;
525  bool bChanged;
526  const char *pSetting;
527  int instanceNumber;
528  const char *positionAfterSubInstanceNumber = 0;
529  const char *positionAfterInstanceNumber = 0;
530  int subInstanceNumber;
531 
532  g_hash_table_iter_init (&notifyHashIterator, notifyhash);
533  while (g_hash_table_iter_next (&notifyHashIterator, &paramName, &notifyEnable))
534  {
535  int* isNotifyEnabled = (int *)notifyEnable;
536  instanceNumber = 0;
537  if(matchComponent((const char*)paramName,"Device.IP.Interface",&pSetting,instanceNumber))
538  {
539  if(!instanceNumber)
540  { // Ethernet settings not found in Notify Hash Table
541  continue;
542  }
543  hostIf_IPInterface *pIface = hostIf_IPInterface::getInstance(instanceNumber);
544  if(pIface)
545  {
546  if (strcasecmp(pSetting,"Enable") == 0)
547  {
548  memset(&msgData,0,sizeof(msgData));
549  bChanged = false;
550  pIface->get_Interface_Enable(&msgData,&bChanged);
551  if(bChanged)
552  {
553  if(mUpdateCallback && (*isNotifyEnabled == 1))
554  {
555  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
556  }
557  }
558  }
559  else if (strcasecmp(pSetting,"IPv4Enable") == 0)
560  {
561  memset(&msgData,0,sizeof(msgData));
562  bChanged = false;
563  pIface->get_Interface_IPv4Enable(&msgData,&bChanged);
564  if(bChanged)
565  {
566  if(mUpdateCallback && (*isNotifyEnabled == 1))
567  {
568  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
569  }
570  }
571  }
572  else if (strcasecmp(pSetting,"IPv6Enable") == 0)
573  {
574  memset(&msgData,0,sizeof(msgData));
575  bChanged = false;
576  pIface->get_Interface_IPv6Enable(&msgData,&bChanged);
577  if(bChanged)
578  {
579  if(mUpdateCallback && (*isNotifyEnabled == 1))
580  {
581  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
582  }
583  }
584  }
585  else if (strcasecmp(pSetting,"ULAEnable") == 0)
586  {
587  memset(&msgData,0,sizeof(msgData));
588  bChanged = false;
589  pIface->get_Interface_ULAEnable(&msgData,&bChanged);
590  if(bChanged)
591  {
592  if(mUpdateCallback && (*isNotifyEnabled == 1))
593  {
594  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
595  }
596  }
597  }
598 
599  else if (strcasecmp(pSetting,"Status") == 0)
600  {
601  memset(&msgData,0,sizeof(msgData));
602  bChanged = false;
603  pIface->get_Interface_Status(&msgData,&bChanged);
604  if(bChanged)
605  {
606  if(mUpdateCallback && (*isNotifyEnabled == 1))
607  {
608  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
609  }
610  }
611  }
612  else if (strcasecmp(pSetting,"Alias") == 0)
613  {
614  memset(&msgData,0,sizeof(msgData));
615  bChanged = false;
616  pIface->get_Interface_Alias(&msgData,&bChanged);
617  if(bChanged)
618  {
619  if(mUpdateCallback && (*isNotifyEnabled == 1))
620  {
621  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
622  }
623  }
624  }
625  else if (strcasecmp(pSetting,"Name") == 0)
626  {
627  memset(&msgData,0,sizeof(msgData));
628  bChanged = false;
629  pIface->get_Interface_Name(&msgData,&bChanged);
630  if(bChanged)
631  {
632  if(mUpdateCallback && (*isNotifyEnabled == 1))
633  {
634  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
635  }
636  }
637  }
638  else if (strcasecmp(pSetting,"LastChange") == 0)
639  {
640  memset(&msgData,0,sizeof(msgData));
641  bChanged = false;
642  pIface->get_Interface_LastChange(&msgData,&bChanged);
643  if(bChanged)
644  {
645  if(mUpdateCallback && (*isNotifyEnabled == 1))
646  {
647  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
648  }
649  }
650  }
651  else if (strcasecmp(pSetting,"LowerLayers") == 0)
652  {
653  memset(&msgData,0,sizeof(msgData));
654  bChanged = false;
655  pIface->get_Interface_LowerLayers(&msgData,&bChanged);
656  if(bChanged)
657  {
658  if(mUpdateCallback && (*isNotifyEnabled == 1))
659  {
660  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
661  }
662  }
663  }
664  else if (strcasecmp(pSetting,"Router") == 0)
665  {
666  memset(&msgData,0,sizeof(msgData));
667  bChanged = false;
668  pIface->get_Interface_Router(&msgData,&bChanged);
669  if(bChanged)
670  {
671  if(mUpdateCallback && (*isNotifyEnabled == 1))
672  {
673  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
674  }
675  }
676  }
677  else if (strcasecmp(pSetting,"Reset") == 0)
678  {
679  memset(&msgData,0,sizeof(msgData));
680  bChanged = false;
681  pIface->get_Interface_Reset(&msgData,&bChanged);
682  if(bChanged)
683  {
684  if(mUpdateCallback && (*isNotifyEnabled == 1))
685  {
686  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
687  }
688  }
689  }
690  else if(strcasecmp(pSetting,"MaxMTUSize") == 0)
691  {
692  memset(&msgData,0,sizeof(msgData));
693  bChanged = false;
694  pIface->get_Interface_MaxMTUSize(&msgData,&bChanged);
695  if(bChanged)
696  {
697  if(mUpdateCallback && (*isNotifyEnabled == 1))
698  {
699  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
700  }
701  }
702  }
703  else if(strcasecmp(pSetting,"Type") == 0)
704  {
705  memset(&msgData,0,sizeof(msgData));
706  bChanged = false;
707  pIface->get_Interface_Type(&msgData,&bChanged);
708  if(bChanged)
709  {
710  if(mUpdateCallback && (*isNotifyEnabled == 1))
711  {
712  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
713  }
714  }
715  }
716  else if(strcasecmp(pSetting,"Loopback") == 0)
717  {
718  memset(&msgData,0,sizeof(msgData));
719  bChanged = false;
720  pIface->get_Interface_Loopback(&msgData,&bChanged);
721  if(bChanged)
722  {
723  if(mUpdateCallback && (*isNotifyEnabled == 1))
724  {
725  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
726  }
727  }
728  }
729  else if(strcasecmp(pSetting,"AutoIPEnable") == 0)
730  {
731  memset(&msgData,0,sizeof(msgData));
732  bChanged = false;
733  pIface->get_Interface_AutoIPEnable(&msgData,&bChanged);
734  if(bChanged)
735  {
736  if(mUpdateCallback && (*isNotifyEnabled == 1))
737  {
738  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
739  }
740  }
741  }
742  else if(strncasecmp (pSetting, "Stats", strlen ("Stats")) == 0)
743  {
744  hostIf_IPInterfaceStats *pIfaceStats = hostIf_IPInterfaceStats::getInstance(instanceNumber);
745  if(strcasecmp(pSetting,"Stats.BytesSent") == 0)
746  {
747  memset(&msgData,0,sizeof(msgData));
748  bChanged = false;
749  pIfaceStats->get_Device_IP_Interface_Stats_BytesSent(&msgData,&bChanged);
750  if(bChanged)
751  {
752  if(mUpdateCallback && (*isNotifyEnabled == 1))
753  {
754  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
755  }
756  }
757  }
758  else if(strcasecmp(pSetting,"Stats.BytesReceived") == 0)
759  {
760  memset(&msgData,0,sizeof(msgData));
761  bChanged = false;
762  pIfaceStats->get_Device_IP_Interface_Stats_BytesReceived(&msgData,&bChanged);
763  if(bChanged)
764  {
765  if(mUpdateCallback && (*isNotifyEnabled == 1))
766  {
767  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
768  }
769  }
770  }
771  else if(strcasecmp(pSetting,"Stats.PacketsSent") == 0)
772  {
773  memset(&msgData,0,sizeof(msgData));
774  bChanged = false;
775  pIfaceStats->get_Device_IP_Interface_Stats_PacketsSent(&msgData,&bChanged);
776  if(bChanged)
777  {
778  if(mUpdateCallback && (*isNotifyEnabled == 1))
779  {
780  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
781  }
782  }
783  }
784  else if(strcasecmp(pSetting,"Stats.PacketsReceived") == 0)
785  {
786  memset(&msgData,0,sizeof(msgData));
787  bChanged = false;
788  pIfaceStats->get_Device_IP_Interface_Stats_PacketsReceived(&msgData,&bChanged);
789  if(bChanged)
790  {
791  if(mUpdateCallback && (*isNotifyEnabled == 1))
792  {
793  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
794  }
795  }
796  }
797  else if(strcasecmp(pSetting,"Stats.ErrorsSent") == 0)
798  {
799  memset(&msgData,0,sizeof(msgData));
800  bChanged = false;
801  pIfaceStats->get_Device_IP_Interface_Stats_ErrorsSent(&msgData,&bChanged);
802  if(bChanged)
803  {
804  if(mUpdateCallback && (*isNotifyEnabled == 1))
805  {
806  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
807  }
808  }
809  }
810  else if(strcasecmp(pSetting,"Stats.ErrorsReceived") == 0)
811  {
812  memset(&msgData,0,sizeof(msgData));
813  bChanged = false;
814  pIfaceStats->get_Device_IP_Interface_Stats_ErrorsReceived(&msgData,&bChanged);
815  if(bChanged)
816  {
817  if(mUpdateCallback && (*isNotifyEnabled == 1))
818  {
819  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
820  }
821  }
822  }
823  else if(strcasecmp(pSetting,"Stats.UnicastPacketsSent") == 0)
824  {
825  memset(&msgData,0,sizeof(msgData));
826  bChanged = false;
827  pIfaceStats->get_Device_IP_Interface_Stats_UnicastPacketsSent(&msgData,&bChanged);
828  if(bChanged)
829  {
830  if(mUpdateCallback && (*isNotifyEnabled == 1))
831  {
832  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
833  }
834  }
835  }
836  else if(strcasecmp(pSetting,"Stats.UnicastPacketsSent") == 0)
837  {
838  memset(&msgData,0,sizeof(msgData));
839  bChanged = false;
840  pIfaceStats->get_Device_IP_Interface_Stats_UnicastPacketsSent(&msgData,&bChanged);
841  if(bChanged)
842  {
843  if(mUpdateCallback && (*isNotifyEnabled == 1))
844  {
845  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
846  }
847  }
848  }
849  else if(strcasecmp(pSetting,"Stats.UnicastPacketsReceived") == 0)
850  {
851  memset(&msgData,0,sizeof(msgData));
852  bChanged = false;
853  pIfaceStats->get_Device_IP_Interface_Stats_UnicastPacketsReceived(&msgData,&bChanged);
854  if(bChanged)
855  {
856  if(mUpdateCallback && (*isNotifyEnabled == 1))
857  {
858  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
859  }
860  }
861  }
862  else if(strcasecmp(pSetting,"Stats.DiscardPacketsSent") == 0)
863  {
864  memset(&msgData,0,sizeof(msgData));
865  bChanged = false;
866  pIfaceStats->get_Device_IP_Interface_Stats_DiscardPacketsSent(&msgData,&bChanged);
867  if(bChanged)
868  {
869  if(mUpdateCallback && (*isNotifyEnabled == 1))
870  {
871  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
872  }
873  }
874  }
875  else if(strcasecmp(pSetting,"Stats.DiscardPacketsReceived") == 0)
876  {
877  memset(&msgData,0,sizeof(msgData));
878  bChanged = false;
879  pIfaceStats->get_Device_IP_Interface_Stats_DiscardPacketsReceived(&msgData,&bChanged);
880  if(bChanged)
881  {
882  if(mUpdateCallback && (*isNotifyEnabled == 1))
883  {
884  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
885  }
886  }
887  }
888  else if(strcasecmp(pSetting,"Stats.MulticastPacketsSent") == 0)
889  {
890  memset(&msgData,0,sizeof(msgData));
891  bChanged = false;
892  pIfaceStats->get_Device_IP_Interface_Stats_MulticastPacketsSent(&msgData,&bChanged);
893  if(bChanged)
894  {
895  if(mUpdateCallback && (*isNotifyEnabled == 1))
896  {
897  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
898  }
899  }
900  }
901  else if(strcasecmp(pSetting,"Stats.MulticastPacketsReceived") == 0)
902  {
903  memset(&msgData,0,sizeof(msgData));
904  bChanged = false;
905  pIfaceStats->get_Device_IP_Interface_Stats_MulticastPacketsReceived(&msgData,&bChanged);
906  if(bChanged)
907  {
908  if(mUpdateCallback && (*isNotifyEnabled == 1))
909  {
910  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
911  }
912  }
913  }
914  else if(strcasecmp(pSetting,"Stats.PacketsSent") == 0)
915  {
916  memset(&msgData,0,sizeof(msgData));
917  bChanged = false;
918  pIfaceStats->get_Device_IP_Interface_Stats_BroadcastPacketsSent(&msgData,&bChanged);
919  if(bChanged)
920  {
921  if(mUpdateCallback && (*isNotifyEnabled == 1))
922  {
923  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
924  }
925  }
926  }
927  else if(strcasecmp(pSetting,"Stats.BroadcastPacketsReceived") == 0)
928  {
929  memset(&msgData,0,sizeof(msgData));
930  bChanged = false;
931  pIfaceStats->get_Device_IP_Interface_Stats_BroadcastPacketsSent(&msgData,&bChanged);
932  if(bChanged)
933  {
934  if(mUpdateCallback && (*isNotifyEnabled == 1))
935  {
936  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
937  }
938  }
939  }
940  else if(strcasecmp(pSetting,"Stats.UnknownProtoPacketsReceived") == 0)
941  {
942  memset(&msgData,0,sizeof(msgData));
943  bChanged = false;
944  pIfaceStats->get_Device_IP_Interface_Stats_UnknownProtoPacketsReceived(&msgData,&bChanged);
945  if(bChanged)
946  {
947  if(mUpdateCallback && (*isNotifyEnabled == 1))
948  {
949  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
950  }
951  }
952  }
953 
954  }
955  else if((positionAfterInstanceNumber != NULL) && (matchComponent(positionAfterInstanceNumber, "IPv4Address", &positionAfterSubInstanceNumber, subInstanceNumber))) //CID:80424 - Forward Null
956  {
957  hostIf_IPv4Address *pIfaceIPv4 = hostIf_IPv4Address::getInstance(instanceNumber);
958  if(pIfaceIPv4)
959  {
960  if(strcasecmp(pSetting,"Enable") == 0)
961  {
962  memset(&msgData,0,sizeof(msgData));
963  bChanged = false;
964  pIfaceIPv4->get_IPv4Address_Enable(&msgData,subInstanceNumber,&bChanged);
965  if(bChanged)
966  {
967  if(mUpdateCallback && (*isNotifyEnabled == 1))
968  {
969  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
970  }
971  }
972  else if(strcasecmp(pSetting,"Status") == 0)
973  {
974  memset(&msgData,0,sizeof(msgData));
975  bChanged = false;
976  pIfaceIPv4->get_IPv4Address_Status(&msgData,subInstanceNumber,&bChanged);
977  if(bChanged)
978  {
979  if(mUpdateCallback && (*isNotifyEnabled == 1))
980  {
981  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
982  }
983  }
984  }
985  else if(strcasecmp(pSetting,"Alias") == 0)
986  {
987  memset(&msgData,0,sizeof(msgData));
988  bChanged = false;
989  pIfaceIPv4->get_IPv4Address_Alias(&msgData,subInstanceNumber,&bChanged);
990  if(bChanged)
991  {
992  if(mUpdateCallback && (*isNotifyEnabled == 1))
993  {
994  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
995  }
996  }
997  }
998  else if(strcasecmp(pSetting,"SubnetMask") == 0)
999  {
1000  memset(&msgData,0,sizeof(msgData));
1001  bChanged = false;
1002  pIfaceIPv4->get_IPv4Address_SubnetMask(&msgData,subInstanceNumber,&bChanged);
1003  if(bChanged)
1004  {
1005  if(mUpdateCallback && (*isNotifyEnabled == 1))
1006  {
1007  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1008  }
1009  }
1010  }
1011  else if(strcasecmp(pSetting,"AddressingType") == 0)
1012  {
1013  memset(&msgData,0,sizeof(msgData));
1014  bChanged = false;
1015  pIfaceIPv4->get_IPv4Address_AddressingType(&msgData,subInstanceNumber,&bChanged);
1016  if(bChanged)
1017  {
1018  if(mUpdateCallback && (*isNotifyEnabled == 1))
1019  {
1020  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1021  }
1022  }
1023  }
1024  else if(strcasecmp(pSetting,"IPAddress") == 0)
1025  {
1026  memset(&msgData,0,sizeof(msgData));
1027  bChanged = false;
1028  pIfaceIPv4->get_IPv4Address_IPAddress(&msgData,subInstanceNumber,&bChanged);
1029  if(bChanged)
1030  {
1031  if(mUpdateCallback && (*isNotifyEnabled == 1))
1032  {
1033  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1034  }
1035  }
1036  }
1037 
1038  }
1039 
1040  }
1041  }
1042  memset(&msgData,0,sizeof(msgData));
1043  if(pIface->get_Interface_IPv4AddressNumberOfEntries(&msgData) == OK)
1044  {
1045  int tmpNoDev = get_int(msgData.paramValue);
1046  char tmp[TR69HOSTIFMGR_MAX_PARAM_LEN] = "";
1047  sprintf(objectPath,"Device.IP.Interface.%d.%s",index,"IPv4AddressNumberOfEntries");
1048  while(curNumOfIPv4Interface[index] > tmpNoDev)
1049  {
1050  sprintf(tmp,"%s.%d.",objectPath,tmpNoDev);
1051  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_REMOVE,tmp, NULL, hostIf_IntegerType);
1052  tmpNoDev++;
1053  }
1054  while(curNumOfIPv4Interface[index] < tmpNoDev)
1055  {
1056  sprintf(tmp,"%s.",objectPath);
1057  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_ADD,tmp, NULL, hostIf_IntegerType);
1058  tmpNoDev--;
1059  }
1060  curNumOfIPv4Interface[index] = get_int(msgData.paramValue);
1061  }
1062 
1063  }
1064  }
1065  else if(matchComponent((const char*)paramName,"Device.IP.ActivePort",&pSetting,instanceNumber))
1066  {
1067  hostIf_IPActivePort *pIfaceActive = hostIf_IPActivePort::getInstance(instanceNumber);
1068  if(pIfaceActive)
1069  {
1070  if (strcasecmp(pSetting,"LocalIPAddress") == 0)
1071  {
1072  memset(&msgData,0,sizeof(msgData));
1073  bChanged = false;
1074  pIfaceActive->get_Device_IP_ActivePort_LocalIPAddress(&msgData,&bChanged);
1075  if(bChanged)
1076  {
1077  if(mUpdateCallback && (*isNotifyEnabled == 1))
1078  {
1079  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1080  }
1081  }
1082  }
1083  else if (strcasecmp(pSetting,"LocalPort") == 0)
1084  {
1085  memset(&msgData,0,sizeof(msgData));
1086  bChanged = false;
1087  pIfaceActive->get_Device_IP_ActivePort_LocalPort(&msgData,&bChanged);
1088  if(bChanged)
1089  {
1090  if(mUpdateCallback && (*isNotifyEnabled == 1))
1091  {
1092  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1093  }
1094  }
1095  }
1096  else if (strcasecmp(pSetting,"RemoteIPAddress") == 0)
1097  {
1098  memset(&msgData,0,sizeof(msgData));
1099  bChanged = false;
1100  pIfaceActive->get_Device_IP_ActivePort_RemoteIPAddress(&msgData,&bChanged);
1101  if(bChanged)
1102  {
1103  if(mUpdateCallback && (*isNotifyEnabled == 1))
1104  {
1105  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1106  }
1107  }
1108  }
1109  else if (strcasecmp(pSetting,"RemotePort") == 0)
1110  {
1111  memset(&msgData,0,sizeof(msgData));
1112  bChanged = false;
1113  pIfaceActive->get_Device_IP_ActivePort_RemotePort(&msgData,&bChanged);
1114  if(bChanged)
1115  {
1116  if(mUpdateCallback && (*isNotifyEnabled == 1))
1117  {
1118  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1119  }
1120  }
1121  }
1122  else if (strcasecmp(pSetting,"Status") == 0)
1123  {
1124  memset(&msgData,0,sizeof(msgData));
1125  bChanged = false;
1126  pIfaceActive->get_Device_IP_ActivePort_Status(&msgData,&bChanged);
1127  if(bChanged)
1128  {
1129  if(mUpdateCallback && (*isNotifyEnabled == 1))
1130  {
1131  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1132  }
1133  }
1134  }
1135 
1136  }
1137 
1138  }
1139  else if(matchComponent((const char*)paramName,"Device.IP",&pSetting,instanceNumber))
1140  {
1141  hostIf_IP *pIPIface = hostIf_IP::getInstance(instanceNumber);
1142  if(pIPIface)
1143  {
1144  if (strcasecmp(pSetting,"IPv4Capable") == 0)
1145  {
1146  memset(&msgData,0,sizeof(msgData));
1147  bChanged = false;
1148  pIPIface->get_Device_IP_IPv4Capable(&msgData,&bChanged);
1149  if(bChanged)
1150  {
1151  if(mUpdateCallback && (*isNotifyEnabled == 1))
1152  {
1153  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1154  }
1155  }
1156  }
1157  else if (strcasecmp(pSetting,"IPv4Enable") == 0)
1158  {
1159  memset(&msgData,0,sizeof(msgData));
1160  bChanged = false;
1161  pIPIface->get_Device_IP_IPv4Enable(&msgData,&bChanged);
1162  if(bChanged)
1163  {
1164  if(mUpdateCallback && (*isNotifyEnabled == 1))
1165  {
1166  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1167  }
1168  }
1169  }
1170  else if (strcasecmp(pSetting,"IPv4Status") == 0)
1171  {
1172  memset(&msgData,0,sizeof(msgData));
1173  bChanged = false;
1174  pIPIface->get_Device_IP_IPv4Status(&msgData,&bChanged);
1175  if(bChanged)
1176  {
1177  if(mUpdateCallback && (*isNotifyEnabled == 1))
1178  {
1179  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1180  }
1181  }
1182  }
1183  else if (strcasecmp(pSetting,"ULAPrefix") == 0)
1184  {
1185  memset(&msgData,0,sizeof(msgData));
1186  bChanged = false;
1187  pIPIface->get_Device_IP_ULAPrefix(&msgData,&bChanged);
1188  if(bChanged)
1189  {
1190  if(mUpdateCallback && (*isNotifyEnabled == 1))
1191  {
1192  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,(const char*)paramName, msgData.paramValue, msgData.paramtype);
1193  }
1194  }
1195  }
1196 
1197 
1198  }
1199 
1200  }
1201 
1202  }
1203  }
1204 
1205 
1206  /*
1207  // TODO: Device.IP.IPv6Enable
1208  #ifdef IPV6_SUPPORT
1209  memset(&msgData,0,sizeof(msgData));
1210  bChanged = false;
1211  pIPIface->get_Device_IP_IPv6Enable(&msgData,&bChanged);
1212  if(bChanged)
1213  {
1214  sprintf(objectPath,"Device.IP.%d.%s",index,"IPv6Enable");
1215  mUpdateCallback(IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED,objectPath, msgData.paramValue, msgData.paramtype);
1216  }
1217  #endif // IPV6_SUPPORT
1218  */
1219 
1220 #endif /* HAVE_VALUE_CHANGE_EVENT */
1221 }
1222 
1223 
1224 
1225 
1226 
1227 
1228 
1229 
1230 /** @} */
1231 /** @} */
hostIf_IP_Diagnostics_IPPing
Definition: Device_IP_Diagnostics_IPPing.h:33
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_UnicastPacketsReceived
int get_Device_IP_Interface_Stats_UnicastPacketsReceived(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of unicast packets received on the IP Interface. Provides the total num...
Definition: Device_IP_Interface_Stats.cpp:510
IARM_BUS_TR69HOSTIFMGR_EVENT_REMOVE
@ IARM_BUS_TR69HOSTIFMGR_EVENT_REMOVE
Definition: hostIf_tr69ReqHandler.h:188
_HostIf_MsgData_t::instanceNum
short instanceNum
Definition: hostIf_tr69ReqHandler.h:176
hostIf_IPv4Address::get_IPv4Address_IPAddress
int get_IPv4Address_IPAddress(HOSTIF_MsgData_t *stMsgData, int subInstanceNo, bool *pChanged=NULL)
This function used to get an IP Interface IPv4 IP Address.
Definition: Device_IP_Interface_IPv4Address.cpp:446
hostIf_IPInterface::get_Interface_Router
int get_Interface_Router(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the Router instance that is associated with an IP Interface entry....
Definition: Device_IP_Interface.cpp:736
hostIf_IPActivePort::get_Device_IP_ActivePort_RemoteIPAddress
int get_Device_IP_ActivePort_RemoteIPAddress(HOSTIF_MsgData_t *, bool *pChanged=NULL)
This function gets the remote IP Address of the established connection. It provides the remote IP add...
Definition: Device_IP_ActivePort.cpp:332
hostIf_IP::get_Device_IP_ULAPrefix
int get_Device_IP_ULAPrefix(HOSTIF_MsgData_t *, bool *pChanged=NULL)
Get the ULA(Unique Local Address)/48 prefix for a device. This function provides the ULA /48 prefix o...
Definition: Device_IP.cpp:634
hostIf_IPInterface::get_Interface_Enable
int get_Interface_Enable(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the status to enabled or disabled of an IP Interface. It provides the values such ...
Definition: Device_IP_Interface.cpp:366
hostIf_IPInterface::get_Interface_LastChange
int get_Interface_LastChange(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the last change of status time of the interface. It provides the accumulated time ...
Definition: Device_IP_Interface.cpp:680
IPClientReqHandler::init
virtual bool init()
This function is used to initialize. Currently not implemented.
Definition: hostIf_IPClient_ReqHandler.cpp:101
IARM_BUS_TR69HOSTIFMGR_EVENT_ADD
@ IARM_BUS_TR69HOSTIFMGR_EVENT_ADD
Definition: hostIf_tr69ReqHandler.h:187
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_UnicastPacketsSent
int get_Device_IP_Interface_Stats_UnicastPacketsSent(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of unicast packets for which a request to send on the IP Interface was ...
Definition: Device_IP_Interface_Stats.cpp:478
hostIf_IPActivePort
This class provides the hostIf IP active port for getting IP active port information.
Definition: Device_IP_ActivePort.cpp:53
hostIf_IPActivePort::get_Device_IP_ActivePort_RemotePort
int get_Device_IP_ActivePort_RemotePort(HOSTIF_MsgData_t *, bool *pChanged=NULL)
This function gets the remote port number of the established connection. It provides the remote port ...
Definition: Device_IP_ActivePort.cpp:365
Device_IP_ActivePort.h
The header file provides TR069 device IP active port information APIs.
hostIf_IPClient_ReqHandler.h
The header file provides HostIf IP client request handler information APIs.
hostIf_IPInterface::get_Interface_Name
int get_Interface_Name(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the IP Interface Name.It provides the textual name of the interface as assigned by...
Definition: Device_IP_Interface.cpp:638
_HostIf_MsgData_t
Definition: hostIf_tr69ReqHandler.h:170
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_PacketsReceived
int get_Device_IP_Interface_Stats_PacketsReceived(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the total number of packets received on the IP Interface.
Definition: Device_IP_Interface_Stats.cpp:379
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_DiscardPacketsReceived
int get_Device_IP_Interface_Stats_DiscardPacketsReceived(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of discarded inbound packets on the IP Interface. It provides the total...
Definition: Device_IP_Interface_Stats.cpp:578
hostIf_IP_Diagnostics_SpeedTest::handleSetMsg
int handleSetMsg(HOSTIF_MsgData_t *stMsgData)
This function sets the profile parameter data It sets the values of Enable_Speedtest,...
Definition: Device_IP_Diagnostics_SpeedTest.cpp:137
hostIf_IPInterface::get_Interface_Reset
int get_Interface_Reset(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
Get IP Interface Reset status.
Definition: Device_IP_Interface.cpp:759
Device_IP_Interface.h
The header file provides TR069 device IP interface information APIs.
hostIf_IPInterface::get_Interface_Type
int get_Interface_Type(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the IP Interface Type. It provides the IP interface type. Possible values are Norm...
Definition: Device_IP_Interface.cpp:831
IPClientReqHandler::unInit
virtual bool unInit()
This function is used to close all the instances of IP interface, IP interface stats IPv4 Address,...
Definition: hostIf_IPClient_ReqHandler.cpp:118
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_UnknownProtoPacketsReceived
int get_Device_IP_Interface_Stats_UnknownProtoPacketsReceived(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of Packets of unidentified protocol received on the IP Interface....
Definition: Device_IP_Interface_Stats.cpp:743
hostIf_IP_Diagnostics_SpeedTest::getInstance
static hostIf_IP_Diagnostics_SpeedTest & getInstance()
This function provides single instance of hostIF_IP_Diagnostics_SpeedTest.
Definition: Device_IP_Diagnostics_SpeedTest.cpp:80
hostIf_IP
This class provides the hostIf IP interface for getting IP interface information.
Definition: Device_IP.h:162
hostIf_IPInterface::get_Interface_Alias
int get_Interface_Alias(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the instance handle for an IP Interface. It provides a non-volatile handle used to...
Definition: Device_IP_Interface.cpp:620
hostIf_main.h
hostIf_main API.
hostIf_IPInterface::get_Interface_IPv4AddressNumberOfEntries
int get_Interface_IPv4AddressNumberOfEntries(HOSTIF_MsgData_t *stMsgData)
Get the IP Interface IPv4AddressNumberOfEntries.
Definition: Device_IP_Interface.cpp:1016
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_BytesReceived
int get_Device_IP_Interface_Stats_BytesReceived(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of bytes received on the IP Interface. It provides the total number of ...
Definition: Device_IP_Interface_Stats.cpp:318
hostIf_IP::get_Device_IP_InterfaceNumberOfEntries
static int get_Device_IP_InterfaceNumberOfEntries(HOSTIF_MsgData_t *)
Get the number of entries in the Interface table.
Definition: Device_IP.cpp:641
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_BroadcastPacketsSent
int get_Device_IP_Interface_Stats_BroadcastPacketsSent(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of broadcast packets sent on the IP Interface. It provides the total nu...
Definition: Device_IP_Interface_Stats.cpp:676
IPClientReqHandler::handleSetMsg
virtual int handleSetMsg(HOSTIF_MsgData_t *stMsgData)
This function is used to handle the set message request of IP interface IPv4Address and IP....
Definition: hostIf_IPClient_ReqHandler.cpp:271
IPClientReqHandler
This class provides the interface for getting IP client request handler information.
Definition: hostIf_IPClient_ReqHandler.h:57
hostIf_IPv6Address
This class provides the hostIf IP interface for getting IPv6 interface information.
Definition: Device_IP_Interface_IPv6Address.h:81
hostIf_IPv4Address
This class provides the hostIf IPv4 interface address for getting interface address information.
Definition: Device_IP_Interface_IPv4Address.h:127
hostIf_IPInterface::getIPv4AddressNumberOfEntries
unsigned int getIPv4AddressNumberOfEntries()
Definition: Device_IP_Interface.cpp:998
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_PacketsSent
int get_Device_IP_Interface_Stats_PacketsSent(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
Get the number of packets sent on the IP Interface.
Definition: Device_IP_Interface_Stats.cpp:349
hostIf_IPInterface::get_Interface_LowerLayers
int get_Interface_LowerLayers(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
Get IP Interface LowerLayers.
Definition: Device_IP_Interface.cpp:708
Device_IP_Interface_Stats.h
The header file provides TR069 device IP interface stats information APIs.
hostIf_IPActivePort::get_Device_IP_ActivePort_LocalIPAddress
int get_Device_IP_ActivePort_LocalIPAddress(HOSTIF_MsgData_t *, bool *pChanged=NULL)
This function gets the local IP Address of the connection.
Definition: Device_IP_ActivePort.cpp:266
hostIf_IPActivePort::get_Device_IP_ActivePort_LocalPort
int get_Device_IP_ActivePort_LocalPort(HOSTIF_MsgData_t *, bool *pChanged=NULL)
This function gets the local port number of the connection.
Definition: Device_IP_ActivePort.cpp:298
_HostIf_MsgData_t::paramtype
HostIf_ParamType_t paramtype
Definition: hostIf_tr69ReqHandler.h:177
hostIf_IPInterface::get_Interface_IPv4Enable
int get_Interface_IPv4Enable(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the status of the IPv4 stack attachment for an IP interface. It indicates whether ...
Definition: Device_IP_Interface.cpp:411
hostIf_IP::get_Device_IP_IPv4Capable
int get_Device_IP_IPv4Capable(HOSTIF_MsgData_t *, bool *pChanged=NULL)
Get the IPv4 capability of a device.
Definition: Device_IP.cpp:542
RDK_LOG
#define RDK_LOG
Definition: rdk_debug.h:258
_HostIf_MsgData_t::faultCode
faultCode_t faultCode
Definition: hostIf_tr69ReqHandler.h:179
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_DiscardPacketsSent
int get_Device_IP_Interface_Stats_DiscardPacketsSent(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of discarded outbound packets on the IP Interface. It provides the tota...
Definition: Device_IP_Interface_Stats.cpp:544
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_ErrorsReceived
int get_Device_IP_Interface_Stats_ErrorsReceived(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of receive errors on the IP Interface. It provides the total number of ...
Definition: Device_IP_Interface_Stats.cpp:445
_HostIf_MsgData_t::paramName
char paramName[(4 *1024)]
Definition: hostIf_tr69ReqHandler.h:171
hostIf_IP_Diagnostics_SpeedTest
Definition: Device_IP_Diagnostics_SpeedTest.h:36
hostIf_IPInterfaceStats
This class provides the hostIf IP interface stats for getting IP interface stats information.
Definition: Device_IP_Interface_Stats.h:143
hostIf_IP::get_Device_IP_IPv4Enable
int get_Device_IP_IPv4Enable(HOSTIF_MsgData_t *, bool *pChanged=NULL)
Get the status (enabled/disabled) of the IPv4 stack on a device.
Definition: Device_IP.cpp:570
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_BytesSent
int get_Device_IP_Interface_Stats_BytesSent(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of bytes sent on the IP Interface. It provides the total number of byte...
Definition: Device_IP_Interface_Stats.cpp:287
hostIf_IPInterface::get_Interface_Status
int get_Interface_Status(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the IP interface Status. It provides the current operational state of the Interfac...
Definition: Device_IP_Interface.cpp:576
_HostIf_MsgData_t::paramValue
char paramValue[(4 *1024)]
Definition: hostIf_tr69ReqHandler.h:172
hostIf_IP_Diagnostics_SpeedTest::handleGetMsg
int handleGetMsg(HOSTIF_MsgData_t *stMsgData)
This function is called when profile parameter needs to be read It gets the values of Enable_Speedtes...
Definition: Device_IP_Diagnostics_SpeedTest.cpp:98
hostIf_IPv4Address::get_IPv4Address_AddressingType
int get_IPv4Address_AddressingType(HOSTIF_MsgData_t *stMsgData, int subInstanceNo, bool *pChanged=NULL)
This function gets an IP Interface IPv4 Address AddressingType assign the IP address....
Definition: Device_IP_Interface_IPv4Address.cpp:551
Device_IP.h
The header file provides TR069 device IP information APIs.
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_MulticastPacketsReceived
int get_Device_IP_Interface_Stats_MulticastPacketsReceived(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of Multicast Packets received on the IP Interface. It provides the tota...
Definition: Device_IP_Interface_Stats.cpp:642
hostIf_IPInterface::get_Interface_ULAEnable
int get_Interface_ULAEnable(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the status 'enabled' or 'disabled' of ULA(Unique local address) generation for an ...
Definition: Device_IP_Interface.cpp:514
Device_IP_Interface_IPv6Address.h
The header file provides TR069 device IPv6 interface address information APIs.
hostIf_IPInterface
This class provides the hostIf IP interface for getting IP interface information.
Definition: Device_IP_Interface.h:224
hostIf_IPv4Address::get_IPv4Address_Status
int get_IPv4Address_Status(HOSTIF_MsgData_t *stMsgData, int subInstanceNo, bool *pChanged=NULL)
This function gets the status of an IPv4 Address table entry. It provides the status of this IPv4Addr...
Definition: Device_IP_Interface_IPv4Address.cpp:354
hostIf_IPv4Address::get_IPv4Address_Enable
int get_IPv4Address_Enable(HOSTIF_MsgData_t *stMsgData, int subInstanceNo, bool *pChanged=NULL)
Get status (enabled/disabled) of IPv4 address.
Definition: Device_IP_Interface_IPv4Address.cpp:313
IPClientReqHandler::handleGetMsg
virtual int handleGetMsg(HOSTIF_MsgData_t *stMsgData)
This function is used to handle the get message request of IP interface, IPv4Address,...
Definition: hostIf_IPClient_ReqHandler.cpp:146
msgHandler
Definition: hostIf_msgHandler.h:103
hostIf_IPv4Address::get_IPv4Address_Alias
int get_IPv4Address_Alias(HOSTIF_MsgData_t *stMsgData, int subInstanceNo, bool *pChanged=NULL)
This function gets the instance handle for an IPv4 Address of an IP Interface. It provides a non-vola...
Definition: Device_IP_Interface_IPv4Address.cpp:423
Device_IP_Interface_IPv4Address.h
The header file provides TR069 device IPv4 interface address information APIs.
hostIf_IPv4Address::get_IPv4Address_SubnetMask
int get_IPv4Address_SubnetMask(HOSTIF_MsgData_t *stMsgData, int subInstanceNo, bool *pChanged=NULL)
This function gets an IP Interface IPv4 Address SubnetMask.
Definition: Device_IP_Interface_IPv4Address.cpp:487
hostIf_IPInterface::get_Interface_MaxMTUSize
int get_Interface_MaxMTUSize(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the IP Interface MaxMTUSize. It provides the maximum transmission unit (MTU),...
Definition: Device_IP_Interface.cpp:795
hostIf_IPActivePort::get_Device_IP_ActivePort_Status
int get_Device_IP_ActivePort_Status(HOSTIF_MsgData_t *, bool *pChanged=NULL)
This function gets the current operational status of the connection. The possible values are 'LISTEN'...
Definition: Device_IP_ActivePort.cpp:395
hostIf_IP::get_Device_IP_ActivePortNumberOfEntries
static int get_Device_IP_ActivePortNumberOfEntries(HOSTIF_MsgData_t *)
Get the number of entries in the ActivePort table.
Definition: Device_IP.cpp:652
put_int
void put_int(char *ptr, int val)
This function converts the input data to integer type.
Definition: hostIf_utils.cpp:152
hostIf_IP::get_Device_IP_IPv4Status
int get_Device_IP_IPv4Status(HOSTIF_MsgData_t *, bool *pChanged=NULL)
This function gets the status of the IPv4 stack on a device. It indicates the status of the IPv4 stac...
Definition: Device_IP.cpp:599
IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED
@ IARM_BUS_TR69HOSTIFMGR_EVENT_VALUECHANGED
Definition: hostIf_tr69ReqHandler.h:189
hostIf_IPInterface::get_Interface_Loopback
int get_Interface_Loopback(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the IP interface loopback. It indicates whether or not the IP interface is a loopb...
Definition: Device_IP_Interface.cpp:951
hostIf_IPInterface::get_Interface_AutoIPEnable
int get_Interface_AutoIPEnable(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
Get the status (enabled/disabled) of Auto-IP on an IP Interface.
Definition: Device_IP_Interface.cpp:1111
hostIf_IPInterface::getIPv6AddressNumberOfEntries
unsigned int getIPv6AddressNumberOfEntries()
Definition: Device_IP_Interface.cpp:1039
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_MulticastPacketsSent
int get_Device_IP_Interface_Stats_MulticastPacketsSent(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of Multicast Packets sent on the IP Interface. It provides the total nu...
Definition: Device_IP_Interface_Stats.cpp:610
hostIf_IPInterfaceStats::get_Device_IP_Interface_Stats_ErrorsSent
int get_Device_IP_Interface_Stats_ErrorsSent(HOSTIF_MsgData_t *stMsgData, bool *pChanged=NULL)
This function gets the number of send errors on the IP Interface. It provides the total number of out...
Definition: Device_IP_Interface_Stats.cpp:413