static int _mi_e1_line_update(struct e1inp_line *line) { struct mISDN_devinfo devinfo; int sk, ret, cnt; if (line->driver != &misdn_driver && line->driver != &misdn_lapd_driver) return -EINVAL; /* open the ISDN card device */ sk = socket(PF_ISDN, SOCK_RAW, ISDN_P_BASE); if (sk < 0) { fprintf(stderr, "%s could not open socket %s\n", __func__, strerror(errno)); return sk; } ret = ioctl(sk, IMGETCOUNT, &cnt); if (ret) { fprintf(stderr, "%s error getting interf count: %s\n", __func__, strerror(errno)); close(sk); return -ENODEV; } //DEBUGP(DLMI,"%d device%s found\n", cnt, (cnt==1)?"":"s"); printf("%d device%s found\n", cnt, (cnt==1)?"":"s"); #if 1 devinfo.id = line->port_nr; ret = ioctl(sk, IMGETDEVINFO, &devinfo); if (ret < 0) { fprintf(stdout, "error getting info for device %d: %s\n", line->port_nr, strerror(errno)); return -ENODEV; } fprintf(stdout, " id: %d\n", devinfo.id); fprintf(stdout, " Dprotocols: %08x\n", devinfo.Dprotocols); fprintf(stdout, " Bprotocols: %08x\n", devinfo.Bprotocols); fprintf(stdout, " protocol: %d\n", devinfo.protocol); fprintf(stdout, " nrbchan: %d\n", devinfo.nrbchan); fprintf(stdout, " name: %s\n", devinfo.name); #endif if (!(devinfo.Dprotocols & (1 << ISDN_P_NT_E1))) { fprintf(stderr, "error: card is not of type E1 (NT-mode)\n"); return -EINVAL; } ret = mi_e1_setup(line, 1); if (ret) return ret; return 0; }
int mi_e1_line_update(struct e1inp_line *line) { struct mISDN_devinfo devinfo; int sk, ret, cnt; if (!line->driver) { /* this must be the first update */ line->driver = &misdn_driver; } else { /* this is a subsequent update */ /* FIXME: first close all sockets */ fprintf(stderr, "incremental line updates not supported yet\n"); return 0; } if (line->driver != &misdn_driver) return -EINVAL; /* open the ISDN card device */ sk = socket(PF_ISDN, SOCK_RAW, ISDN_P_BASE); if (sk < 0) { fprintf(stderr, "%s could not open socket %s\n", __func__, strerror(errno)); return sk; } ret = ioctl(sk, IMGETCOUNT, &cnt); if (ret) { fprintf(stderr, "%s error getting interf count: %s\n", __func__, strerror(errno)); close(sk); return -ENODEV; } //DEBUGP(DMI,"%d device%s found\n", cnt, (cnt==1)?"":"s"); printf("%d device%s found\n", cnt, (cnt==1)?"":"s"); #if 1 devinfo.id = line->num; ret = ioctl(sk, IMGETDEVINFO, &devinfo); if (ret < 0) { fprintf(stdout, "error getting info for device %d: %s\n", line->num, strerror(errno)); return -ENODEV; } fprintf(stdout, " id: %d\n", devinfo.id); fprintf(stdout, " Dprotocols: %08x\n", devinfo.Dprotocols); fprintf(stdout, " Bprotocols: %08x\n", devinfo.Bprotocols); fprintf(stdout, " protocol: %d\n", devinfo.protocol); fprintf(stdout, " nrbchan: %d\n", devinfo.nrbchan); fprintf(stdout, " name: %s\n", devinfo.name); #endif if (!(devinfo.Dprotocols & (1 << ISDN_P_NT_E1))) { fprintf(stderr, "error: card is not of type E1 (NT-mode)\n"); return -EINVAL; } ret = mi_e1_setup(line, 1); if (ret) return ret; return 0; }