* This function will set network interface device gateway address. * @NOTE it can only be called in the network interface device driver. * * @param netdev the network interface device to change * @param gw the new gateway address */
| 938 | * @param gw the new gateway address |
| 939 | */ |
| 940 | void netdev_low_level_set_gw(struct netdev *netdev, const ip_addr_t *gw) |
| 941 | { |
| 942 | RT_ASSERT(gw); |
| 943 | |
| 944 | if (netdev && ip_addr_cmp(&(netdev->gw), gw) == 0) |
| 945 | { |
| 946 | ip_addr_copy(netdev->gw, *gw); |
| 947 | |
| 948 | #ifdef RT_USING_SAL |
| 949 | /* set network interface device flags to internet up */ |
| 950 | if (netdev_is_up(netdev) && netdev_is_link_up(netdev) && |
| 951 | !ip_addr_isany(&(netdev->ip_addr))) |
| 952 | { |
| 953 | sal_check_netdev_internet_up(netdev); |
| 954 | } |
| 955 | #endif /* RT_USING_SAL */ |
| 956 | |
| 957 | /* execute gateway address change callback function */ |
| 958 | if (netdev->addr_callback) |
| 959 | { |
| 960 | netdev->addr_callback(netdev, NETDEV_CB_ADDR_GATEWAY); |
| 961 | } |
| 962 | } |
| 963 | } |
| 964 | |
| 965 | /** |
| 966 | * This function will set network interface device DNS server address. |
no test coverage detected