////////////////////////////////////////////////////////////////// // Generate the get requests to the PHP script to get the time info // and to post status information ////////////////////////////////////////////////////////////////// void web_php_interface(enum PHP_IF_TYPE msgtype){ web_connect(); if (uart_state != CONNECTED) { return ;} printf("GET /micro/webtmr.php?msg="); switch (msgtype) { case REQUEST_TIME: printf("time"); break; case REPORT_CLOCK_SET: printf("clk_set"); break; case REPORT_SWITCH_STATE: printf("%01d", output); break; case REQUEST_SETTINGS: printf("req"); break; case SETTINGS_RETRIEVED: printf("store"); break; } printf(" HTTP/1.1\nHost: lika.be\n\n"); }
s32 ws__SocketApiOpen( WS_ENV *ws_env, s32 *ret ) { s32 err = 0; s32 vrfid = 0; s32 litevrfid = 0; s32 vrf_sw = 0; s32 litevrf_sw = 0; s8 zebra_path[64]={0}; vrf_getvrfswitch(&vrf_sw); vrf_getlitevrfswitch(&litevrf_sw); err = zebra_get_current_litevrfid(&vrfid, &litevrfid, web_log_get_client_user(), vrf_sw, litevrf_sw); if(0 != err) { return ws_send_soap_error(ws_env,"connecting server error"); } litevrf_id = litevrfid; /*web socket path*/ if (0 == vrf_sw) sprintf(zebra_path, "%s%u", ZEBRA_UNIX_PATH, 0); else sprintf(zebra_path, "%s%u", ZEBRA_UNIX_PATH, vrfid); zebra_sockfd = web_connect (zebra_path); if (-1 == zebra_sockfd) { /*Socket error*/ return ERROR_FAIL; } return WS_OK; }
s32 ws__staticRouteIpv6Upload(WS_ENV *ws_env) { u32 num = 0; u16 head = WEB_ROUTE_IPV6_UPLOAD; u8 value[WEB_ZEBRA_WRITE_BUFFER_SIZE] = {0}; if(zebra_sockfd > 0) { close(zebra_sockfd); zebra_sockfd = -1; } zebra_sockfd = web_connect (WEB_ZEBRA_UNIX_PATH); if (-1 == zebra_sockfd) { /*Socket error*/ return ERROR_FAIL; } /* 加入报文头*/ memcpy(value, &head, sizeof(head)); /*将命令发送给zebra,如果返回值小于0,则关闭该fd,并将zebra_sockfd置为0,返回ERR_FAIL*/ num = writen (zebra_sockfd, value, WEB_ZEBRA_WRITE_BUFFER_SIZE); if (num < 0) { close(zebra_sockfd); zebra_sockfd = -1; return ERROR_FAIL; } return ERROR_SUCCESS; }
s32 ws__staticRouteIpv6Save(WS_ENV *ws_env, s32 *ret) { s32 num = -1; u16 head = WEB_ROUTE_IPV6_SAVE; u8 value[WEB_ZEBRA_WRITE_BUFFER_SIZE] = {0}; if(zebra_sockfd > 0) { close(zebra_sockfd); zebra_sockfd = -1; } zebra_sockfd = web_connect (WEB_ZEBRA_UNIX_PATH); if (-1 == zebra_sockfd) { /*Socket error*/ return ERROR_FAIL; } memcpy(value, &head, sizeof(head)); num = writen (zebra_sockfd, value, WEB_ZEBRA_WRITE_BUFFER_SIZE); if (num < 0) { close(zebra_sockfd); zebra_sockfd = -1; return ERROR_FAIL; } *ret = 0; return ERROR_SUCCESS; }
s32 ws__staticRouteIpv6Export() { s32 num = 0; u16 head = WEB_ROUTE_IPV6_EXPORT; u8 value[WEB_ZEBRA_WRITE_BUFFER_SIZE] = {0}; u8 flag = 0; if(zebra_sockfd < 0) { zebra_sockfd = web_connect ("/var/usock/.zweb0"); if (-1 == zebra_sockfd) { /*Socket error*/ return ERROR_FAIL; } } memcpy(value, &head, sizeof(head)); num = writen(zebra_sockfd, value, WEB_ZEBRA_WRITE_BUFFER_SIZE); if (num < 0) { close(zebra_sockfd); zebra_sockfd = -1; return ERROR_FAIL; } num = readn(zebra_sockfd, &flag, 1); if (num < 0) { close(zebra_sockfd); zebra_sockfd = -1; return ERROR_FAIL; } if (1 != flag) return ERROR_FAIL; WEB_SEND_EX_OPERLOG_QUICK(ERROR_FAIL, "Export ipv6 static route."); return ERROR_SUCCESS; }