static int driver_init(void) { struct net_device *dev; int err = -ENODEV; dev = alloc_etherdev(0); if (!(dev = alloc_etherdev(0))) goto out; dev->netdev_ops = &driver_net_ops; /* set MAC */ net_mac(dev->dev_addr, ETH_ALEN); if ((err = register_netdev(dev))) { panic("driver: Could not register back-end %d\n", err); goto out_free; } return 0; out_free: free_netdev(dev); out: return err; }
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; }