GATEWAY获取与设置(Linux C)
来源:互联网 发布:尼古丁贴片淘宝 编辑:程序博客网 时间:2024/06/07 13:11
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <net/if.h>
- #include <sys/ioctl.h>
- #include <errno.h>
- #include <string.h>
- #include <net/route.h>
- #include <unistd.h>
- #include <stdio.h>
- int set_gateway(unsigned long gw)
- {
- int skfd;
- struct rtentry rt;
- int err;
- skfd = socket(PF_INET, SOCK_DGRAM, 0);
- if (skfd < 0)
- return -1;
- /* Delete existing defalt gateway */
- memset(&rt, 0, sizeof(rt));
- rt.rt_dst.sa_family = AF_INET;
- ((struct sockaddr_in *)&rt.rt_dst)->sin_addr.s_addr = 0;
- rt.rt_genmask.sa_family = AF_INET;
- ((struct sockaddr_in *)&rt.rt_genmask)->sin_addr.s_addr = 0;
- rt.rt_flags = RTF_UP;
- err = ioctl(skfd, SIOCDELRT, &rt);
- if ((err == 0 || errno == ESRCH) && gw) {
- /* Set default gateway */
- memset(&rt, 0, sizeof(rt));
- rt.rt_dst.sa_family = AF_INET;
- ((struct sockaddr_in *)&rt.rt_dst)->sin_addr.s_addr = 0;
- rt.rt_gateway.sa_family = AF_INET;
- ((struct sockaddr_in *)&rt.rt_gateway)->sin_addr.s_addr = gw;
- rt.rt_genmask.sa_family = AF_INET;
- ((struct sockaddr_in *)&rt.rt_genmask)- >sin_addr.s_addr = 0;
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- err = ioctl(skfd, SIOCADDRT, &rt);
- }
- close(skfd);
- return err;
- }
- int get_gateway(unsigned long *p)
- {
- FILE *fp;
- char buf[256]; // 128 is enough for linux
- char iface[16];
- unsigned long dest_addr, gate_addr;
- *p = INADDR_NONE;
- fp = fopen("/proc/net/route", "r");
- if (fp == NULL)
- return -1;
- /* Skip title line */
- fgets(buf, sizeof(buf), fp);
- while (fgets(buf, sizeof(buf), fp)) {
- if (sscanf(buf, "%s\t%lX\t%lX", iface, &dest_addr, &gate_addr) != 3 ||
- dest_addr != 0)
- continue;
- *p = gate_addr;
- break;
- }
- fclose(fp);
- return 0;
- }
0 0
- GATEWAY获取与设置(Linux C)
- GATEWAY获取与设置(Linux C)
- GATEWAY获取与设置(Linux C)
- GATEWAY获取与设置(Linux C)
- linux下程序设计-GateWay的获取与设置
- gateway 默认路由获取与设置
- Linux环境下设置IP&DNS&Gateway
- linux ip 设置与获取
- 在linux下 获取,修改网关GateWay的两个函数
- 在Linux下获取修改网关GateWay的两个函数
- Linux上设置静态网络配置,ip/gateway/DNS
- Linux(CentOS)下,设置IP/Netmask/Gateway等
- Linux(CentOS)下,设置IP/Netmask/Gateway等
- linux下程序设计-IP获取与设置
- 工作日记--设置gateway
- linux C 获取与修改IP地址
- linux C 获取与修改IP地址
- linux C 获取与修改IP地址
- HDOJ - 1008 - Elevator(水题)
- 10-26 27 30
- cocos2d-x 物理引擎Box2D
- opengl超级宝典中例子出现的问题
- Centos知识
- GATEWAY获取与设置(Linux C)
- boost内存池的使用介绍
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
- WinCE系统声音定制
- 无人特温特让她
- android学习——GridView实现主界面布局
- High Water Mark导致的SQL效率问题
- WINCE--系统声音定制
- SQL Server 触发器