parent
07de7b4c2f
commit
6d59ecacfa
|
@ -20,7 +20,10 @@ static GtkWidget *g_detailWnd = NULL;
|
||||||
static GtkWidget *g_statusBar = NULL;
|
static GtkWidget *g_statusBar = NULL;
|
||||||
static GtkTextBuffer *g_pTxtBuf[4];
|
static GtkTextBuffer *g_pTxtBuf[4];
|
||||||
static GtkWidget *g_ptvDHcp[4];
|
static GtkWidget *g_ptvDHcp[4];
|
||||||
|
static GtkWidget *g_pSelVal[4];
|
||||||
|
static PBUF_INFO g_HexBuf[4];
|
||||||
static PDHCP_INFO g_preInfo = NULL;
|
static PDHCP_INFO g_preInfo = NULL;
|
||||||
|
static U32 g_curPage = 0;
|
||||||
static const char *g_mess_info[] = {"NONE", "DISCOVER", "OFFER", "REQUEST", "DECLINE",
|
static const char *g_mess_info[] = {"NONE", "DISCOVER", "OFFER", "REQUEST", "DECLINE",
|
||||||
"ACK", "NAK", "RELEASE", "INFORM"};
|
"ACK", "NAK", "RELEASE", "INFORM"};
|
||||||
|
|
||||||
|
@ -348,7 +351,6 @@ static gboolean upgrade_statusbar_proc(gpointer user_data) {
|
||||||
|
|
||||||
void details_wnd_show(PDHCP_INFO pInfo) {
|
void details_wnd_show(PDHCP_INFO pInfo) {
|
||||||
int i;
|
int i;
|
||||||
PBUF_INFO hexBuf[4];
|
|
||||||
GtkTextIter iter, iter1;
|
GtkTextIter iter, iter1;
|
||||||
|
|
||||||
if (pInfo) {
|
if (pInfo) {
|
||||||
|
@ -363,16 +365,16 @@ void details_wnd_show(PDHCP_INFO pInfo) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hexBuf[0] = &pInfo->pDiscBuf;
|
g_HexBuf[0] = &pInfo->pDiscBuf;
|
||||||
hexBuf[1] = &pInfo->pOfferBuf;
|
g_HexBuf[1] = &pInfo->pOfferBuf;
|
||||||
hexBuf[2] = &pInfo->pReqBuf;
|
g_HexBuf[2] = &pInfo->pReqBuf;
|
||||||
hexBuf[3] = &pInfo->pAckBuf;
|
g_HexBuf[3] = &pInfo->pAckBuf;
|
||||||
// 填充HEX 窗口数据
|
// 填充HEX 窗口数据
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
char buf[128] = {0};
|
char buf[128] = {0};
|
||||||
U32 offset = 0;
|
U32 offset = 0;
|
||||||
|
|
||||||
if (hexBuf[i]->buf_size == 0) {
|
if (g_HexBuf[i]->buf_size == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -387,7 +389,7 @@ void details_wnd_show(PDHCP_INFO pInfo) {
|
||||||
sprintf(buf, " Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII Tables\n");
|
sprintf(buf, " Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII Tables\n");
|
||||||
gtk_text_buffer_insert_with_tags_by_name(g_pTxtBuf[i], &iter, buf, -1, "hex_head", NULL);
|
gtk_text_buffer_insert_with_tags_by_name(g_pTxtBuf[i], &iter, buf, -1, "hex_head", NULL);
|
||||||
|
|
||||||
int row = hexBuf[i]->buf_size / 16 + ((hexBuf[i]->buf_size % 16) > 0 ? 1 : 0);
|
int row = g_HexBuf[i]->buf_size / 16 + ((g_HexBuf[i]->buf_size % 16) > 0 ? 1 : 0);
|
||||||
|
|
||||||
for (int k = 0; k < row; k++) {
|
for (int k = 0; k < row; k++) {
|
||||||
char bufOffset[24] = {0};
|
char bufOffset[24] = {0};
|
||||||
|
@ -397,7 +399,7 @@ void details_wnd_show(PDHCP_INFO pInfo) {
|
||||||
|
|
||||||
for (int m = 0; m < 16; m++) {
|
for (int m = 0; m < 16; m++) {
|
||||||
char bufStr[4] = {0};
|
char bufStr[4] = {0};
|
||||||
sprintf(bufStr, "%02X ", hexBuf[i]->p[k * 16 + m]);
|
sprintf(bufStr, "%02X ", g_HexBuf[i]->p[k * 16 + m]);
|
||||||
strcat(buf, bufStr);
|
strcat(buf, bufStr);
|
||||||
if (m == 7 || m == 15) {
|
if (m == 7 || m == 15) {
|
||||||
strcat(buf, " ");
|
strcat(buf, " ");
|
||||||
|
@ -405,9 +407,9 @@ void details_wnd_show(PDHCP_INFO pInfo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int m = 0; m < 16; m++) {
|
for (int m = 0; m < 16; m++) {
|
||||||
if (isprint(hexBuf[i]->p[k * 16 + m])) {
|
if (isprint(g_HexBuf[i]->p[k * 16 + m])) {
|
||||||
char bufStr[2] = {0};
|
char bufStr[2] = {0};
|
||||||
bufStr[0] = (char)hexBuf[i]->p[k * 16 + m];
|
bufStr[0] = (char)g_HexBuf[i]->p[k * 16 + m];
|
||||||
strcat(buf, bufStr);
|
strcat(buf, bufStr);
|
||||||
} else {
|
} else {
|
||||||
strcat(buf, ".");
|
strcat(buf, ".");
|
||||||
|
@ -420,7 +422,7 @@ void details_wnd_show(PDHCP_INFO pInfo) {
|
||||||
|
|
||||||
// 填充 TreeView
|
// 填充 TreeView
|
||||||
add_dhcp_tree_colums(g_ptvDHcp[i]);
|
add_dhcp_tree_colums(g_ptvDHcp[i]);
|
||||||
create_dhcp_tree_mode((PDHCP_PACKAGE)hexBuf[i]->p, hexBuf[i]->buf_size, g_ptvDHcp[i]);
|
create_dhcp_tree_mode((PDHCP_PACKAGE)g_HexBuf[i]->p, g_HexBuf[i]->buf_size, g_ptvDHcp[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
upgrade_statusbar_proc(pInfo);
|
upgrade_statusbar_proc(pInfo);
|
||||||
|
@ -431,33 +433,97 @@ void details_wnd_show(PDHCP_INFO pInfo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean button_release_event(GtkWidget *self, GdkEventButton UNUSED(event), gpointer UNUSED(user_data)) {
|
static gboolean button_release_event(GtkWidget *self, GdkEventButton UNUSED(event), gpointer UNUSED(user_data)) {
|
||||||
GtkTextIter iter, start_sel, end_sel;
|
int row, col;
|
||||||
|
GtkTextIter iter;
|
||||||
|
GtkTreeIter it;
|
||||||
|
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(g_pSelVal[g_curPage]));
|
||||||
|
GtkListStore *store = GTK_LIST_STORE(model);
|
||||||
GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(self));
|
GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(self));
|
||||||
gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer));
|
|
||||||
int row = gtk_text_iter_get_line(&iter);
|
|
||||||
int col = gtk_text_iter_get_line_offset(&iter);
|
|
||||||
|
|
||||||
if (col <= 57 && col >= 11) {
|
gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer));
|
||||||
if ((col <= 35 && ((col - 11) % 3) == 0) || (col > 35 && (col - 12) % 3 == 0)) {
|
row = gtk_text_iter_get_line(&iter);
|
||||||
GtkTextMark *mark = gtk_text_buffer_get_insert(buffer);
|
col = gtk_text_iter_get_line_offset(&iter);
|
||||||
gtk_text_buffer_get_iter_at_mark(buffer, &start_sel, mark);
|
|
||||||
gtk_text_buffer_get_iter_at_line_offset(buffer, &end_sel, row, 59);
|
if (gtk_tree_model_get_iter_first(model, &it)) {
|
||||||
//char *text = (char *)gtk_text_buffer_get_text(buffer, &iter, &end_sel, FALSE);
|
gtk_list_store_clear(store);
|
||||||
//printf("Select %s(%d, %d)\n", text, row, col);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (col >= 11 && col < 59 && row > 0) {
|
||||||
|
int k;
|
||||||
|
int id;
|
||||||
|
U8 valBuf[8] = {0};
|
||||||
|
sds s = sdsempty();
|
||||||
|
const char *binTbl[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
|
||||||
|
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
|
||||||
|
const char *itemTitle[] = {"Binary", "unsigne char", "unsigne short", "unsigne int", "unsigne long long",
|
||||||
|
"char", "short", "int", "long long"};
|
||||||
|
if (col >= 35) {
|
||||||
|
k = col - 12;
|
||||||
|
} else {
|
||||||
|
k = col - 11;
|
||||||
|
}
|
||||||
|
id = (row - 1) * 16 + (k + 1) / 3;
|
||||||
|
|
||||||
|
//printf("Select at(%d, %d), %d, %d, %d of %d\n", row, col, k, (k + 1) / 3, id, g_curPage);
|
||||||
|
memcpy(valBuf, &g_HexBuf[g_curPage]->p[id], MIN(8, g_HexBuf[g_curPage]->buf_size - id));
|
||||||
|
printf("%d, %d, %s, %s\n", valBuf[0] >> 4, valBuf[0] & 0x0F, binTbl[(valBuf[0] >> 4) & 0xF],
|
||||||
|
binTbl[valBuf[0] & 0x0F]);
|
||||||
|
|
||||||
|
sprintf(s, "%s%s", binTbl[(valBuf[0] >> 4) & 0xF], binTbl[valBuf[0] & 0x0F]);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[0], 1, s, -1);
|
||||||
|
|
||||||
|
sdsclear(s);
|
||||||
|
sprintf(s, "%u", valBuf[0]);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[1], 1, s, -1);
|
||||||
|
|
||||||
|
sdsclear(s);
|
||||||
|
sprintf(s, "%u", *(unsigned short *)valBuf);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[2], 1, s, -1);
|
||||||
|
|
||||||
|
sdsclear(s);
|
||||||
|
sprintf(s, "%u", *(unsigned int *)valBuf);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[3], 1, s, -1);
|
||||||
|
|
||||||
|
sdsclear(s);
|
||||||
|
sprintf(s, "%llu", *(unsigned long long *)valBuf);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[4], 1, s, -1);
|
||||||
|
|
||||||
|
sdsclear(s);
|
||||||
|
sprintf(s, "%d", valBuf[0]);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[5], 1, s, -1);
|
||||||
|
|
||||||
|
sdsclear(s);
|
||||||
|
sprintf(s, "%d", *(short *)valBuf);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[6], 1, s, -1);
|
||||||
|
|
||||||
|
sdsclear(s);
|
||||||
|
sprintf(s, "%d", *(int *)valBuf);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[7], 1, s, -1);
|
||||||
|
|
||||||
|
sdsclear(s);
|
||||||
|
sprintf(s, "%lld", *(long long *)valBuf);
|
||||||
|
gtk_list_store_append(store, &it);
|
||||||
|
gtk_list_store_set(store, &it, 0, itemTitle[8], 1, s, -1);
|
||||||
|
|
||||||
|
sdsfree(s);
|
||||||
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void switch_page(GtkNotebook *UNUSED(self),
|
void switch_page(GtkNotebook *UNUSED(self), GtkWidget *UNUSED(page), guint(page_num), gpointer UNUSED(user_data)) {
|
||||||
GtkWidget *UNUSED(page),
|
|
||||||
guint UNUSED(page_num),
|
|
||||||
gpointer UNUSED(user_data)) {
|
|
||||||
if (g_preInfo) {
|
if (g_preInfo) {
|
||||||
details_wnd_show(g_preInfo);
|
details_wnd_show(g_preInfo);
|
||||||
upgrade_statusbar_proc(g_preInfo);
|
upgrade_statusbar_proc(g_preInfo);
|
||||||
}
|
}
|
||||||
|
g_curPage = page_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
void details_wnd_create(GtkBuilder *builder) {
|
void details_wnd_create(GtkBuilder *builder) {
|
||||||
|
@ -478,6 +544,7 @@ void details_wnd_create(GtkBuilder *builder) {
|
||||||
// 页标签的位置,可以有四种位置:上、下、左或右。
|
// 页标签的位置,可以有四种位置:上、下、左或右。
|
||||||
gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
|
gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
|
||||||
g_signal_connect(notebook, "switch-page", G_CALLBACK(switch_page), NULL);
|
g_signal_connect(notebook, "switch-page", G_CALLBACK(switch_page), NULL);
|
||||||
|
gtk_widget_set_name(notebook, "nbDhcpInfo");
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
@ -521,13 +588,6 @@ void details_wnd_create(GtkBuilder *builder) {
|
||||||
gtk_tree_view_append_column(GTK_TREE_VIEW(tvHex), column);
|
gtk_tree_view_append_column(GTK_TREE_VIEW(tvHex), column);
|
||||||
|
|
||||||
GtkListStore *store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
|
GtkListStore *store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
|
||||||
|
|
||||||
const char *itemTitle[] = {"Binary", "unsigne char", "unsigne short", "unsigne int", "unsigne char long long",
|
|
||||||
"char", "short", "int", "long long"};
|
|
||||||
for (int k = 0; k < ARRAY_SIZE(itemTitle); k++) {
|
|
||||||
gtk_list_store_append(store, &iter);
|
|
||||||
gtk_list_store_set(store, &iter, 0, itemTitle[k], 1, "", -1);
|
|
||||||
}
|
|
||||||
gtk_tree_view_set_model(GTK_TREE_VIEW(tvHex), GTK_TREE_MODEL(store));
|
gtk_tree_view_set_model(GTK_TREE_VIEW(tvHex), GTK_TREE_MODEL(store));
|
||||||
|
|
||||||
gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(tvHex), GTK_TREE_VIEW_GRID_LINES_BOTH);
|
gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(tvHex), GTK_TREE_VIEW_GRID_LINES_BOTH);
|
||||||
|
@ -552,6 +612,7 @@ void details_wnd_create(GtkBuilder *builder) {
|
||||||
g_signal_connect(G_OBJECT(scText), "button_release_event", G_CALLBACK(button_release_event), builder);
|
g_signal_connect(G_OBJECT(scText), "button_release_event", G_CALLBACK(button_release_event), builder);
|
||||||
|
|
||||||
g_ptvDHcp[i] = tvDhcp;
|
g_ptvDHcp[i] = tvDhcp;
|
||||||
|
g_pSelVal[i] = tvHex;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_statusBar = gtk_statusbar_new();
|
g_statusBar = gtk_statusbar_new();
|
||||||
|
|
|
@ -46,6 +46,7 @@ const char *u32_to_str_ip_safe(unsigned int ip);
|
||||||
unsigned short udp_checksum(unsigned int saddr, unsigned int daddr, unsigned char *pUdp);
|
unsigned short udp_checksum(unsigned int saddr, unsigned int daddr, unsigned char *pUdp);
|
||||||
unsigned short ip_checksum(unsigned char *pIp);
|
unsigned short ip_checksum(unsigned char *pIp);
|
||||||
int string_mac_to_bytes(const char *pStrMac, unsigned char macByte[6]);
|
int string_mac_to_bytes(const char *pStrMac, unsigned char macByte[6]);
|
||||||
|
unsigned long long ntohll(unsigned long long val);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,30 +25,30 @@ typedef enum {
|
||||||
} ZLOG_LV;
|
} ZLOG_LV;
|
||||||
|
|
||||||
#define DEF_ZLOG_MOD(ZLOG_MOD) \
|
#define DEF_ZLOG_MOD(ZLOG_MOD) \
|
||||||
ZLOG_MOD(ZLOG_MOD_MAIN, ZLOG_LEVEL_DEBUG, "MAIN") \
|
ZLOG_MOD(ZLOG_MOD_MAIN, ZLOG_LEVEL_INFO, "MAIN") \
|
||||||
ZLOG_MOD(ZLOG_MOD_TASK, ZLOG_LEVEL_DEBUG, "TASK") \
|
ZLOG_MOD(ZLOG_MOD_TASK, ZLOG_LEVEL_INFO, "TASK") \
|
||||||
ZLOG_MOD(ZLOG_MOD_INIT, ZLOG_LEVEL_DEBUG, "INIT") \
|
ZLOG_MOD(ZLOG_MOD_INIT, ZLOG_LEVEL_INFO, "INIT") \
|
||||||
ZLOG_MOD(ZLOG_MOD_MISC, ZLOG_LEVEL_DEBUG, "MISC") \
|
ZLOG_MOD(ZLOG_MOD_MISC, ZLOG_LEVEL_INFO, "MISC") \
|
||||||
ZLOG_MOD(ZLOG_MOD_WATCH, ZLOG_LEVEL_DEBUG, "WATCH") \
|
ZLOG_MOD(ZLOG_MOD_WATCH, ZLOG_LEVEL_INFO, "WATCH") \
|
||||||
ZLOG_MOD(ZLOG_MOD_CONFIG, ZLOG_LEVEL_DEBUG, "CONFIG") \
|
ZLOG_MOD(ZLOG_MOD_CONFIG, ZLOG_LEVEL_INFO, "CONFIG") \
|
||||||
ZLOG_MOD(ZLOG_MOD_DB, ZLOG_LEVEL_DEBUG, "DB") \
|
ZLOG_MOD(ZLOG_MOD_DB, ZLOG_LEVEL_INFO, "DB") \
|
||||||
ZLOG_MOD(ZLOG_MOD_NET, ZLOG_LEVEL_DEBUG, "NET") \
|
ZLOG_MOD(ZLOG_MOD_NET, ZLOG_LEVEL_INFO, "NET") \
|
||||||
ZLOG_MOD(ZLOG_MOD_CRYPTO, ZLOG_LEVEL_DEBUG, "CRYPTO") \
|
ZLOG_MOD(ZLOG_MOD_CRYPTO, ZLOG_LEVEL_INFO, "CRYPTO") \
|
||||||
ZLOG_MOD(ZLOG_MOD_MQ, ZLOG_LEVEL_DEBUG, "MQ") \
|
ZLOG_MOD(ZLOG_MOD_MQ, ZLOG_LEVEL_INFO, "MQ") \
|
||||||
ZLOG_MOD(ZLOG_MOD_PROTO, ZLOG_LEVEL_DEBUG, "PROTO") \
|
ZLOG_MOD(ZLOG_MOD_PROTO, ZLOG_LEVEL_INFO, "PROTO") \
|
||||||
ZLOG_MOD(ZLOG_MOD_HTTPD, ZLOG_LEVEL_INFO, "HTTPD") \
|
ZLOG_MOD(ZLOG_MOD_HTTPD, ZLOG_LEVEL_INFO, "HTTPD") \
|
||||||
ZLOG_MOD(ZLOG_MOD_JSCHEM, ZLOG_LEVEL_INFO, "JSCHEM") \
|
ZLOG_MOD(ZLOG_MOD_JSCHEM, ZLOG_LEVEL_INFO, "JSCHEM") \
|
||||||
ZLOG_MOD(ZLOG_MOD_USER, ZLOG_LEVEL_DEBUG, "USER") \
|
ZLOG_MOD(ZLOG_MOD_USER, ZLOG_LEVEL_INFO, "USER") \
|
||||||
ZLOG_MOD(ZLOG_MOD_PPPOE, ZLOG_LEVEL_DEBUG, "PPPOE") \
|
ZLOG_MOD(ZLOG_MOD_PPPOE, ZLOG_LEVEL_INFO, "PPPOE") \
|
||||||
ZLOG_MOD(ZLOG_MOD_VXLAN, ZLOG_LEVEL_DEBUG, "VXLAN") \
|
ZLOG_MOD(ZLOG_MOD_VXLAN, ZLOG_LEVEL_INFO, "VXLAN") \
|
||||||
ZLOG_MOD(ZLOG_MOD_LWIP, ZLOG_LEVEL_DEBUG, "LWIP") \
|
ZLOG_MOD(ZLOG_MOD_LWIP, ZLOG_LEVEL_INFO, "LWIP") \
|
||||||
ZLOG_MOD(ZM_DHCP, ZLOG_LEVEL_DEBUG, "DHCP") \
|
ZLOG_MOD(ZM_DHCP, ZLOG_LEVEL_INFO, "DHCP") \
|
||||||
ZLOG_MOD(ZM_DHCP_NET, ZLOG_LEVEL_DEBUG, "DHCP_N") \
|
ZLOG_MOD(ZM_DHCP_NET, ZLOG_LEVEL_INFO, "DHCP_N") \
|
||||||
ZLOG_MOD(ZM_DHCP_POOL, ZLOG_LEVEL_DEBUG, "DHCP_P") \
|
ZLOG_MOD(ZM_DHCP_POOL, ZLOG_LEVEL_INFO, "DHCP_P") \
|
||||||
ZLOG_MOD(ZM_DHCP_USR, ZLOG_LEVEL_DEBUG, "DHCP_U") \
|
ZLOG_MOD(ZM_DHCP_USR, ZLOG_LEVEL_INFO, "DHCP_U") \
|
||||||
ZLOG_MOD(ZM_DHCP_LEASE, ZLOG_LEVEL_DEBUG, "DHCP_L") \
|
ZLOG_MOD(ZM_DHCP_LEASE, ZLOG_LEVEL_INFO, "DHCP_L") \
|
||||||
ZLOG_MOD(ZM_DHCP_DB, ZLOG_LEVEL_DEBUG, "DHCP_DB") \
|
ZLOG_MOD(ZM_DHCP_DB, ZLOG_LEVEL_INFO, "DHCP_DB") \
|
||||||
ZLOG_MOD(ZLOG_MOD_OPENDHCPD, ZLOG_LEVEL_DEBUG, "ODHCPD")
|
ZLOG_MOD(ZLOG_MOD_OPENDHCPD, ZLOG_LEVEL_INFO, "ODHCPD")
|
||||||
|
|
||||||
#define GENERATE_ZLOG_MOD_ENUM(ENUM, lv, x) ENUM,
|
#define GENERATE_ZLOG_MOD_ENUM(ENUM, lv, x) ENUM,
|
||||||
|
|
||||||
|
|
|
@ -267,6 +267,11 @@ const char *u32_to_str_ip_safe(unsigned int ip) {
|
||||||
return strdup(inet_ntoa(s));
|
return strdup(inet_ntoa(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long long ntohll(unsigned long long val)
|
||||||
|
{
|
||||||
|
return (((unsigned long long) ntohl(val)) << 32) + ntohl(val >> 32);
|
||||||
|
}
|
||||||
|
|
||||||
int get_all_network_info(PSYS_NIC_INFO pInfo) {
|
int get_all_network_info(PSYS_NIC_INFO pInfo) {
|
||||||
int i;
|
int i;
|
||||||
unsigned long nicCnt;
|
unsigned long nicCnt;
|
||||||
|
|
Loading…
Reference in New Issue