www.pudn.com > mypro-telnet.rar > setGateway.c, change:2010-07-15,size:6603b
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <netinet/in.h> #include <arpa/inet.h> typedef struct DevParam { unsigned int version; //00-01 硬件版本号 //unsigned char mac[2]; //02-03 空闲MAC地址 unsigned int devID; //04-07 设备id unsigned char localIP[4]; //08-0B IP地址 unsigned char gateIP[4]; //0C-0F 网关 unsigned char netMask[4]; //10-13 子网掩码 unsigned short dnsPort; //14-15 端口 unsigned char centerIP[4]; //16-19 服务器IP unsigned char dnsIP[4]; //1A-1D DNS服务器IP unsigned short registTime; //1e-1F 注册服务器时间 unsigned char domainName[32]; //20-3F 域名 unsigned char hostName[32]; //40-5F 主机名 unsigned char username[8]; //60-67 登陆用户名 unsigned char password[8]; //68-6F 登陆密码 unsigned short baudRate; //70-71 控制云台波特率 unsigned short alarmPtr[6]; //72-7d 四个报警量和2个报警输出量的配置信息地址 unsigned short usbStorePtr; //7e-7f unsigned char pppoe; //80-80 unsigned char staticIP; //81-81 静态IP开关 unsigned char pppUsername[30]; //82-9F pppoe的用户名 unsigned char PPPPassword[30]; //A0-BD pppoe的密码 unsigned char audioFormat; //BE-BE 音频格式 unsigned char audioInterval; //BF-BF 音频打包间隔 unsigned char comRxMode; //c0-C0 串口数据接收模式 0爱康威 1首信 unsigned char pswNeed; //c1-c1 是否需要操作密码 unsigned char vgamode; //c2-c2 VGA显示模式设置 unsigned char outmode; //c3-c3 VGA显示模式设置 unsigned short ddns; //c4-c5 unsigned char wifi; //c6-c6 unsigned char wifimode; //c7-c7 unsigned short wifiCodeaddr; //c8-c9 unsigned char wifiASC; //ca-ca //十六进制(0)ASCII(1) unsigned char DD; //cb-cb char NTPServerIP[4]; //cc-cf short infoaddr; //d0-d1 short TimeRegion; //d2-d3 unsigned short ptrPlatForm; //d4-d5 平台参数指针 unsigned short webServicePort; //d6-d7 web Service端口 unsigned char NOUSED[4]; //d8-db 空 char wifinum; //dc-dc unsigned char DHCP; //dd-dd dhcp开关 unsigned char wifiIP[4]; //de-e1 unsigned char wifimask[4]; //e2-e5 unsigned char wifigateway[4]; //e6-e9 unsigned short webTcpPort; //ea-eb web 媒体服务端口 unsigned short TimePlan; //ec-ed 各种报警的时间策略指针 unsigned short connectPORT; //ee-ef 端口 unsigned char connectIP[4]; //f0-f3 接入服务器的ip(备用) unsigned char udata; //f4-f4 串口参数 unsigned char ustop; //f5-f5 停止位 unsigned char ucheck; //f6-f6 校验位 unsigned char workModule; //f7-f7 工作模式0表示被动,1表示主动 int MultiCastGIP; //f8-fb 多播组IP unsigned short MultiCastGPort; //fc-fd 多播组PORT unsigned int softVersion; //fe-ff unsigned int EncoderVer; //编码器版本 int MaxChannel; //最大通道 unsigned char devMac[6]; //MAC地址 } __attribute__((packed))DevParam; typedef struct ZXDevParam { char ID_Dev[32]; //c0-df 视频服务器的设备ID unsigned char registPwd[32]; //注册密码16 unsigned char fdnsIP[4]; char SipAliveIP[4]; //64-67 Sip心跳IP unsigned short SipAlivePort; //68-69 Sip心跳端口 unsigned short SipRegPort; //6a-6b Sip注册端口 char SipRegIP[4]; //6c-6f Sip注册IP char AliveIP[4]; //心跳主机 unsigned short AlivePort; //心跳主机端口 unsigned short mediaPort; //媒体端口号 unsigned short mediaCtrPort; //媒体控制端口号 char AlarmServerIp[4]; //管理服务器IP unsigned short AlarmServerPort; //管理服务器PORT unsigned short wifiPoint; //wifi参数指针 //delete unsigned char MaxConnect; //每个通道的最大连接数 unsigned int RegisterValidTime; //100-103 注册有效时长(单位s),超过有效时长后视频服务器重新发送注册消息,以小时为单位。 char FtpServer[4]; //10c-10f ftp远程存储服务器IP unsigned short FtpPort; //110-111 ftp远程存储服务器PORT unsigned char SpaceAlarm; //112-112 硬盘满报警阀值(0-100) char FtpUsername[32]; //114-133 ftp远程存储服务器用户名 char FtpPassword[32]; //134-153 ftp远程存储服务器密码 unsigned char AliveEnable; //154-154 是否使能心跳 unsigned short PuSipPort; //158-159 前端SIP端口 unsigned char enableSipRegister; //15a-15a 是否使能SIP注册 unsigned char enableSipHeartbeat; //15b-15b 是否使能SIP心跳 unsigned short sipHeartbeatPeriod; //15c-15d SIP心跳周期,以秒为单位 char alarmURL[32]; //15e-17d 接收告警信号的URL unsigned char ComFlowBit; //181-181 溢出位 unsigned char diskFullAlarmEnabled; //182-182 硬盘满报警使能 unsigned char diskErrorAlarmEnabled; //183-183 硬盘错误报警使能 unsigned short videoMonitorEn; //184-185 unsigned short MonitorInterval; //186-187 unsigned short SerialTimeOut; //188-189 串口接收超时时间 char remoteControlID[128]; }__attribute__((packed))ZXDevParam; DevParam devParam; ZXDevParam ZXdevParam; int readDevParm() { FILE *fpDev = NULL; if ((fpDev=fopen("/dvs/Dev.bin","r")) == NULL) { printf("Error:Can't open the file Dev.bin!\n"); return -1; } else { if (fread(&devParam,1,sizeof(DevParam),fpDev) != sizeof(DevParam)) { printf("Error:Reading from Dev.bin failed!\n"); return -1; } if (fread(&ZXdevParam,1,sizeof(ZXDevParam),fpDev)!=sizeof(ZXDevParam)) { printf("Error:Reading from Dev.bin failed!\n"); return -1; } fclose(fpDev); } return 0; } void writeDevParm() { FILE *fp = NULL; if ((fp=fopen("/dvs/Dev.bin","wb")) == NULL) { printf("Error:Can't open the file Dev.bin!\n"); } else { fwrite(&devParam, 1, sizeof(DevParam), fp); ZXdevParam.AliveEnable = 1; ZXdevParam.RegisterValidTime = 2; fwrite(&ZXdevParam, 1, sizeof(ZXDevParam), fp); fclose(fp); } } int main(int argc, char* argv[]) { unsigned int ip; if (argc < 2) { printf("Error:No parameter!\n"); return -1; } if (readDevParm() < 0) return -1; ip = inet_addr(argv[1]); memcpy(devParam.gateIP, (char*)&ip, 4); writeDevParm(); system("reboot"); return 0; }