This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/TM4C1294NCPDT:NDK -使用 DHCP 时检索默认网关

Guru**** 2601915 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/743840/rtos-tm4c1294ncpdt-ndk---retrieving-the-default-gateway-when-using-dhcp

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

当使用 DHCP 与 TI-RTOS NDK (TI-RTOS 版本2.16.01.14、NDK 版本2.25.00.09)时、我在检索默认网关时遇到困难。

在通过 DHCP 接收新 IP 地址信息时调用的挂钩函数中、我有以下代码、用于检索默认网关地址:

INT 结果;

  Int NumberOfInstances = CfgGetEntryCnt (0、CFGTAG _IPNet、1);//成功

  if (NumberOfInstances >= 1){

    CI_IPNet ipconfig;

     bzero (&ipconfig、sizeof (CI_IPNet));

     结果= CfgGetImmadi(
      0、CFGTAG _IPNet、1、电阻值、
      sizeof (CI_IPNet)、(UINT8*)&ipconfig); //成功
     (笑声)
  }

NumberOfInstances = CfgGetEntryCnt (0、CFGTAG _route、1);//失败

if (NumberOfInstances >= 1){

CI_route routeconfig;

bzero (routeconfig、sizeof (ci_route));

结果= CfgGetImmadi(
  0、CFGTAG _route、1、NumberOfInstances、
  sizeof (CI_route)、(UINT8*)和 routeconfig;

if (结果){

  (笑声)

对于标签 CFGTAG _route 调用 CfgGetEntryCnt 后、NumberOfIn阻 值始终为零、这意味着配置中没有路由信息。

在浏览其他论坛帖子时,我看到下面这篇帖子 ,其中建议在 routeif.h 中使用函数 Rt*,在 NDK 文件 conroute.c 中使用函数 DumpRoute.c,提供了如何使用这些函数的示例。 不过、此函数和代码看起来很复杂。

e2e.ti.com/.../1900996

使用 DHCP 时获取默认网关 IP 地址的正确方法是什么? 我的代码是否位于右上方、或者我是否必须执行  与 NDK 文件 conroute.c 中的函数 DumpRouteTable 中的内容类似的操作?

提前感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我们已指派了一些人来查看此内容。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    执行此操作的方法是它在您链接的线程上显示的方式。 您可以查看 NDK 安装中 packages/ti/NDK/tools/console/conroute.c 中的示例、然后您感兴趣的代码段如下:

    /*如果路由是网关,则也打印网关 IP 地址*/
    if (wFlags & FLG_RTE_GATEWAY)
    {
    llEnter();
    ipaddr = RtGetGateIP( HRT );
    llExit();
    NtIPN2Str( ipaddr,str );
    ConPrintf ("%-15s "、str);
    } 

    您必须稍微修改此内容,因为某些函数(如 ConPrintf())在该示例中是本地函数。

    BR、
    Gerardo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我实施了一种检索网关地址的方法、如 conroute.c 中所示、它起作用。 我现在可以通过 DHCP 获取默认网关。 感谢您的回答。