2025-04-30 15:28:08 +08:00

81 lines
2.0 KiB
C

/*
*
*/
#ifndef IPSCAN_H
#define IPSCAN_H
#define _XOPEN_SOURCE 600 //必须设置这个否则管道方法无法使用
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/select.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "typeorigin.h"
#define DEVTYPE "jda901"
#ifdef AZL5083
#define DEVNAME "AZL5083"
#define ETHNAME_INSIDE "eth0"
#define ETHNAME_OUTSIDE "eth1"
#elif defined SZR303
// AZL 为识别头,必须使用 AZL 开头
#define DEVNAME "AZLR303"
#define ETHNAME_INSIDE "ens0"
#define ETHNAME_OUTSIDE "ens1"
#elif defined MW335
#define DEVNAME "MW335"
#else
#define DEVNAME "UNKNOWN"
#define ETHNAME_INSIDE "ens33"
#define ETHNAME_OUTSIDE "ens33"
#endif
#define PART_TYPE_SIZE 8
#define PART_NAME_SIZE 8
#define PART_IP_SIZE 16
#define PART_MAC_SIZE 20
#define RECV_BUF_SIZE 11 // 接收缓冲区大小,对侧协议决定
#define SEND_BUF_SIZE 128 // 发送缓冲区大小,对侧协议决定
typedef struct _server_udp {
ST_INT port; // 本地端口
ST_CHAR ip[32]; // 本地ip地址
ST_INT sock; // 本地 socket
struct SOCKADDR addr; // 服务器连接属性
} server_udp;
ST_RET InitSystem();
ST_RET InitAndStartUdpServer(server_udp *server, ST_INT port);
ST_RET SeletsUDPData(server_udp *server); //select 超时阻塞模式
ST_RET RecvUdpData(server_udp *server); // 普通阻塞模式
ST_RET SendUdpData(server_udp *server , struct SOCKADDR *client_addr, ST_CHAR *data, ST_INT len);
// 解析 客户端的buff
ST_RET ParseClientBuff(server_udp *server, struct SOCKADDR *client_addr, ST_CHAR *buff);
ST_RET CloseUdpServer(server_udp *server);
// 获取设备信息
ST_RET GetDevInfo(ST_CHAR *buff, ST_INT buff_len);
ST_RET GetIPAddr(ST_CHAR *buff, const ST_CHAR *ethname);
ST_RET GetMacAddr(ST_CHAR *buff, const ST_CHAR *ethname);
// 设置网关
ST_RET SetGateway(ST_CHAR *ethname);
ST_RET EXEC_CMD(const ST_CHAR *cmd, ST_CHAR *result, ST_INT ret_len);
ST_VOID PrintBuffer(ST_UCHAR *buff, ST_INT len);
#endif