ldc_diag_t * diag(int log, ldc_info_t * info) { ldc_info_t * current_info; ldc_diag_t * head = NULL; ldc_diag_t * tail = NULL; for (current_info = info; current_info != NULL; current_info = current_info->next) { tail = new_ldc_diag_t("wireless"); head = enqueue_ldc_diag_t(head, tail); // find the logical_name in info tuple_t * current_tuple; for (current_tuple = current_info->info; current_tuple != NULL && strcmp(current_tuple->name, "device_file") != 0; current_tuple = current_tuple->next); if (current_tuple) { char name[100]; char value[1000]; int id; char description[100]; char *net_dev = current_tuple->value; if (strcmp(net_dev, "") == 0){ SETUP_TUPLE("device_file", net_dev, -1, "Netcard Device File"); tail->info = enqueue_new_tuple_t(tail->info, name, value, id, description); add_diag_tuple(tail, "mac", "None", -1, "MAC Address"); add_diag_tuple(tail, "ip", "None", -1, "IP Address"); add_diag_tuple(tail, "netmask", "None", -1, "Netmask"); add_diag_tuple(tail, "link_up", "None", -1, "Link UP"); add_diag_tuple(tail, "dns_server", "None", -1, "DNS Server"); add_diag_tuple(tail, "gateway", "None", -1, "Default Gateway"); } else { SETUP_TUPLE("device_file", net_dev, -1, "Netcard Device File"); tail->info = enqueue_new_tuple_t(tail->info, name, value, id, description); net_link(net_dev, tail); net_mac(net_dev, tail); net_conf(net_dev, tail); net_dns(tail); net_gw(net_dev, tail); } } } if (log){ insert_diag_log(head); } return head; }
// Lua: socket:dns( string, function(ip) ) static int net_socket_dns( lua_State* L ) { const char *mt = "net.socket"; return net_dns(L, mt); }