summaryrefslogtreecommitdiffstats
path: root/hdlcutil
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2017-01-27 14:25:16 +0100
committerRalf Baechle <ralf@linux-mips.org>2017-02-06 23:43:46 +0100
commitbb9279493ef43242a5be0b96c79065f874c1ae7a (patch)
tree27dec6873883c6a6ac13fb032904b6739dfb710f /hdlcutil
parentff0eea7e58b77e868294431fc16a02b743725cde (diff)
hdlcutil: Remove undocumented user mode.
The wrecking ball used was mostly this coccinelle script: @@ @@ - if (kernel_mode) { ... -} @@ @@ - if (!kernel_mode) { ... -} plus a bit of manual work for the remaining instances of kernel_mode. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'hdlcutil')
-rw-r--r--hdlcutil/hdrvcomm.c372
1 files changed, 168 insertions, 204 deletions
diff --git a/hdlcutil/hdrvcomm.c b/hdlcutil/hdrvcomm.c
index 7acc74d..d0dc8b6 100644
--- a/hdlcutil/hdrvcomm.c
+++ b/hdlcutil/hdrvcomm.c
@@ -62,7 +62,6 @@
/* ---------------------------------------------------------------------- */
-static int kernel_mode = 1;
static const char *if_name = "bcsf0";
static char *prg_name;
static int fd = -1;
@@ -75,11 +74,9 @@ static int msqid = -1;
static void terminate(void)
{
- if (kernel_mode) {
- if (ioctl(fd, SIOCSIFFLAGS, &ifr_h) < 0) {
- perror("ioctl (SIOCSIFFLAGS)");
- exit(1);
- }
+ if (ioctl(fd, SIOCSIFFLAGS, &ifr_h) < 0) {
+ perror("ioctl (SIOCSIFFLAGS)");
+ exit(1);
}
exit(0);
}
@@ -100,59 +97,60 @@ int hdrvc_recvpacket(char *pkt, int maxlen)
struct sockaddr_ll from;
socklen_t from_len = sizeof(from);
- if (kernel_mode) {
- if (!promisc) {
- if (afpacket) {
- struct sockaddr_ll sll;
- struct packet_mreq mr;
-
- memset(&sll, 0, sizeof(sll));
- sll.sll_family = AF_PACKET;
- sll.sll_ifindex = ifr_h.ifr_ifindex;
- sll.sll_protocol = htons(ETH_P_AX25);
- if (bind(fd, (struct sockaddr *)&sll, sizeof(sll)) < 0) {
- fprintf(stderr, "%s: Error %s (%i) bind failed\n",
- prg_name, strerror(errno), errno);
- exit(-2);
- }
- memset(&mr, 0, sizeof(mr));
- mr.mr_ifindex = sll.sll_ifindex;
- mr.mr_type = PACKET_MR_PROMISC;
- if (setsockopt(fd, SOL_PACKET, PACKET_ADD_MEMBERSHIP, (char *)&mr, sizeof(mr)) < 0) {
- fprintf(stderr, "%s: Error %s (%i) setsockopt SOL_PACKET, PACKET_ADD_MEMBERSHIP failed\n",
- prg_name, strerror(errno), errno);
- exit(-2);
- }
- } else {
- struct sockaddr sa;
-
- strcpy(sa.sa_data, if_name);
- sa.sa_family = AF_INET;
- if (bind(fd, &sa, sizeof(sa)) < 0) {
- fprintf(stderr, "%s: Error %s (%i) bind failed\n",
- prg_name, strerror(errno), errno);
- exit(-2);
- }
- ifr_new = ifr_h;
- ifr_new.ifr_flags |= IFF_PROMISC;
- if (ioctl(fd, SIOCSIFFLAGS, &ifr_new) < 0) {
- perror("ioctl (SIOCSIFFLAGS)");
- exit(1);
- }
- signal(SIGTERM, terminate_sig);
- signal(SIGQUIT, terminate_sig);
- if (atexit((void (*)(void))terminate)) {
- perror("atexit");
- terminate();
- }
+ if (!promisc) {
+ if (afpacket) {
+ struct sockaddr_ll sll;
+ struct packet_mreq mr;
+
+ memset(&sll, 0, sizeof(sll));
+ sll.sll_family = AF_PACKET;
+ sll.sll_ifindex = ifr_h.ifr_ifindex;
+ sll.sll_protocol = htons(ETH_P_AX25);
+ if (bind(fd, (struct sockaddr *)&sll, sizeof(sll)) < 0) {
+ fprintf(stderr,
+ "%s: Error %s (%i) bind failed\n",
+ prg_name, strerror(errno), errno);
+ exit(-2);
+ }
+ memset(&mr, 0, sizeof(mr));
+ mr.mr_ifindex = sll.sll_ifindex;
+ mr.mr_type = PACKET_MR_PROMISC;
+ if (setsockopt(fd, SOL_PACKET, PACKET_ADD_MEMBERSHIP, (char *)&mr, sizeof(mr)) < 0) {
+ fprintf(stderr,
+ "%s: Error %s (%i) setsockopt SOL_PACKET, PACKET_ADD_MEMBERSHIP failed\n",
+ prg_name, strerror(errno), errno);
+ exit(-2);
+ }
+ } else {
+ struct sockaddr sa;
+
+ strcpy(sa.sa_data, if_name);
+ sa.sa_family = AF_INET;
+ if (bind(fd, &sa, sizeof(sa)) < 0) {
+ fprintf(stderr,
+ "%s: Error %s (%i) bind failed\n",
+ prg_name, strerror(errno), errno);
+ exit(-2);
+ }
+ ifr_new = ifr_h;
+ ifr_new.ifr_flags |= IFF_PROMISC;
+ if (ioctl(fd, SIOCSIFFLAGS, &ifr_new) < 0) {
+ perror("ioctl (SIOCSIFFLAGS)");
+ exit(1);
+ }
+ signal(SIGTERM, terminate_sig);
+ signal(SIGQUIT, terminate_sig);
+ if (atexit((void (*)(void))terminate)) {
+ perror("atexit");
+ terminate();
}
- promisc = 1;
- fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK);
}
- if (!pkt || maxlen < 2)
- return 0;
- return recvfrom(fd, pkt, maxlen, 0, (struct sockaddr *)&from, &from_len);
+ promisc = 1;
+ fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK);
}
+ if (!pkt || maxlen < 2)
+ return 0;
+ return recvfrom(fd, pkt, maxlen, 0, (struct sockaddr *)&from, &from_len);
return -1;
}
@@ -183,21 +181,12 @@ void hdrvc_args(int *argc, char *argv[], const char *def_if)
prg_name = argv[0];
for (i = 1; i < ac-1; i++) {
if (!strcmp(argv[i], "-i")) {
- kernel_mode = 1;
if_name = argv[i+1];
ac -= 2;
if (i < ac)
memmove(argv+i, argv+i+2, (ac-i) * sizeof(void *));
i--;
- } else
- if (!strcmp(argv[i], "-u")) {
- kernel_mode = 0;
- if_name = argv[i+1];
- ac -= 2;
- if (i < ac)
- memmove(argv+i, argv+i+2, (ac-i) * sizeof(void *));
- i--;
- }
+ }
}
*argc = ac;
}
@@ -209,38 +198,40 @@ void hdrvc_init(void)
key_t k;
static struct ifreq ifr;
- if (kernel_mode) {
- strcpy(ifr_h.ifr_name, if_name);
+ strcpy(ifr_h.ifr_name, if_name);
/* first try to use AF_PACKET */
- if ((fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_AX25))) < 0
- || ioctl(fd, SIOCGIFINDEX, &ifr_h) < 0) {
- if (fd >= 0)
- close(fd);
- afpacket = 0;
- if ((fd = socket(PF_INET, SOCK_PACKET, htons(ETH_P_AX25))) < 0) {
- fprintf(stderr, "%s: Error %s (%i), cannot open %s\n", prg_name,
- strerror(errno), errno, if_name);
- exit(-1);
- }
- if (ioctl(fd, SIOCGIFFLAGS, &ifr_h) < 0) {
- fprintf(stderr, "%s: Error %s (%i), cannot ioctl SIOCGIFFLAGS %s\n", prg_name,
- strerror(errno), errno, if_name);
- exit(-1);
- }
- }
- strcpy(ifr.ifr_name, if_name);
- if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0 ) {
- fprintf(stderr, "%s: Error %s (%i), cannot ioctl SIOCGIFHWADDR %s\n", prg_name,
+ if ((fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_AX25))) < 0
+ || ioctl(fd, SIOCGIFINDEX, &ifr_h) < 0) {
+ if (fd >= 0)
+ close(fd);
+ afpacket = 0;
+ if ((fd = socket(PF_INET, SOCK_PACKET, htons(ETH_P_AX25))) < 0) {
+ fprintf(stderr, "%s: Error %s (%i), cannot open %s\n",
+ prg_name,
strerror(errno), errno, if_name);
exit(-1);
}
- if (ifr.ifr_hwaddr.sa_family != ARPHRD_AX25) {
- fprintf(stderr, "%s: Error, interface %s not AX25 (%i)\n", prg_name,
- if_name, ifr.ifr_hwaddr.sa_family);
+ if (ioctl(fd, SIOCGIFFLAGS, &ifr_h) < 0) {
+ fprintf(stderr, "%s: Error %s (%i), cannot ioctl SIOCGIFFLAGS %s\n",
+ prg_name,
+ strerror(errno), errno, if_name);
exit(-1);
}
- return;
}
+ strcpy(ifr.ifr_name, if_name);
+ if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0 ) {
+ fprintf(stderr, "%s: Error %s (%i), cannot ioctl SIOCGIFHWADDR %s\n",
+ prg_name,
+ strerror(errno), errno, if_name);
+ exit(-1);
+ }
+ if (ifr.ifr_hwaddr.sa_family != ARPHRD_AX25) {
+ fprintf(stderr, "%s: Error, interface %s not AX25 (%i)\n",
+ prg_name,
+ if_name, ifr.ifr_hwaddr.sa_family);
+ exit(-1);
+ }
+ return;
k = ftok(if_name, USERSM_KEY_PROJ);
if (k == (key_t)-1) {
fprintf(stderr, "%s: Error %s (%i), cannot ftok on %s\n", prg_name,
@@ -293,10 +284,8 @@ int hdrvc_hdlcdrv_ioctl(int cmd, struct hdlcdrv_ioctl *par)
{
struct ifreq ifr = ifr_h;
- if (!kernel_mode) {
- errno = EINVAL;
- return -1;
- }
+ errno = EINVAL;
+ return -1;
ifr.ifr_data = (caddr_t)par;
par->cmd = cmd;
return ioctl(fd, SIOCDEVPRIVATE, &ifr);
@@ -308,10 +297,8 @@ int hdrvc_sm_ioctl(int cmd, struct sm_ioctl *par)
{
struct ifreq ifr = ifr_h;
- if (!kernel_mode) {
- errno = EINVAL;
- return -1;
- }
+ errno = EINVAL;
+ return -1;
ifr.ifr_data = (caddr_t)par;
par->cmd = cmd;
return ioctl(fd, SIOCDEVPRIVATE, &ifr);
@@ -323,10 +310,8 @@ int hdrvc_baycom_ioctl(int cmd, struct baycom_ioctl *par)
{
struct ifreq ifr = ifr_h;
- if (!kernel_mode) {
- errno = EINVAL;
- return -1;
- }
+ errno = EINVAL;
+ return -1;
ifr.ifr_data = (caddr_t)par;
par->cmd = cmd;
return ioctl(fd, SIOCDEVPRIVATE, &ifr);
@@ -338,14 +323,12 @@ unsigned int hdrvc_get_ifflags(void)
{
struct ifreq ifr;
- if (kernel_mode) {
- memcpy(&ifr, &ifr_h, sizeof(ifr));
- if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
- perror("ioctl: SIOCGIFFLAGS");
- exit(-1);
- }
- return ifr.ifr_flags;
+ memcpy(&ifr, &ifr_h, sizeof(ifr));
+ if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
+ perror("ioctl: SIOCGIFFLAGS");
+ exit(-1);
}
+ return ifr.ifr_flags;
return IFF_UP | IFF_RUNNING;
}
@@ -361,12 +344,10 @@ int hdrvc_diag(struct sm_diag_data *diag)
errno = EINVAL;
return -1;
}
- if (kernel_mode) {
- memcpy(&smi.data.diag, diag, sizeof(smi.data.diag));
- ret = hdrvc_sm_ioctl(SMCTL_DIAGNOSE, &smi);
- memcpy(diag, &smi.data.diag, sizeof(smi.data.diag));
- return ret;
- }
+ memcpy(&smi.data.diag, diag, sizeof(smi.data.diag));
+ ret = hdrvc_sm_ioctl(SMCTL_DIAGNOSE, &smi);
+ memcpy(diag, &smi.data.diag, sizeof(smi.data.diag));
+ return ret;
msg.hdr.type = USERSM_CMD_REQ_DIAG;
msg.hdr.channel = 0;
msg.data.diag.mode = diag->mode;
@@ -397,12 +378,10 @@ int hdrvc_get_samples(void)
int ret;
struct hdlcdrv_ioctl bi;
- if (kernel_mode) {
- ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETSAMPLES, &bi);
- if (ret < 0)
- return ret;
- return bi.data.bits & 0xff;
- }
+ ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETSAMPLES, &bi);
+ if (ret < 0)
+ return ret;
+ return bi.data.bits & 0xff;
errno = EAGAIN;
return -1;
}
@@ -414,12 +393,10 @@ int hdrvc_get_bits(void)
int ret;
struct hdlcdrv_ioctl bi;
- if (kernel_mode) {
- ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETBITS, &bi);
- if (ret < 0)
- return ret;
- return bi.data.bits & 0xff;
- }
+ ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETBITS, &bi);
+ if (ret < 0)
+ return ret;
+ return bi.data.bits & 0xff;
errno = EAGAIN;
return -1;
}
@@ -432,20 +409,18 @@ int hdrvc_get_channel_access_param(struct hdrvc_channel_params *par)
int ret;
struct usersmmsg msg;
- if (kernel_mode) {
- if ((ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETCHANNELPAR, &hi)) < 0)
- return ret;
- if (!par) {
- errno = EINVAL;
- return -1;
- }
- par->tx_delay = hi.data.cp.tx_delay;
- par->tx_tail = hi.data.cp.tx_tail;
- par->slottime = hi.data.cp.slottime;
- par->ppersist = hi.data.cp.ppersist;
- par->fulldup = hi.data.cp.fulldup;
- return 0;
+ if ((ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETCHANNELPAR, &hi)) < 0)
+ return ret;
+ if (!par) {
+ errno = EINVAL;
+ return -1;
}
+ par->tx_delay = hi.data.cp.tx_delay;
+ par->tx_tail = hi.data.cp.tx_tail;
+ par->slottime = hi.data.cp.slottime;
+ par->ppersist = hi.data.cp.ppersist;
+ par->fulldup = hi.data.cp.fulldup;
+ return 0;
msg.hdr.type = USERSM_CMD_REQ_CHACCESS_PAR;
msg.hdr.channel = 0;
hdrvc_sendmsg(&msg, 0);
@@ -471,18 +446,16 @@ int hdrvc_set_channel_access_param(struct hdrvc_channel_params par)
int ret;
struct usersmmsg msg;
- if (kernel_mode) {
- struct hdlcdrv_ioctl hi;
+ struct hdlcdrv_ioctl hi;
- hi.data.cp.tx_delay = par.tx_delay;
- hi.data.cp.tx_tail = par.tx_tail;
- hi.data.cp.slottime = par.slottime;
- hi.data.cp.ppersist = par.ppersist;
- hi.data.cp.fulldup = par.fulldup;
- if ((ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_SETCHANNELPAR, &hi)) < 0)
- return ret;
- return 0;
- }
+ hi.data.cp.tx_delay = par.tx_delay;
+ hi.data.cp.tx_tail = par.tx_tail;
+ hi.data.cp.slottime = par.slottime;
+ hi.data.cp.ppersist = par.ppersist;
+ hi.data.cp.fulldup = par.fulldup;
+ if ((ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_SETCHANNELPAR, &hi)) < 0)
+ return ret;
+ return 0;
msg.hdr.type = USERSM_CMD_SET_CHACCESS_PAR;
msg.hdr.channel = 0;
msg.data.cp.tx_delay = par.tx_delay;
@@ -501,10 +474,8 @@ int hdrvc_calibrate(int calib)
struct hdlcdrv_ioctl bhi;
struct usersmmsg msg;
- if (kernel_mode) {
- bhi.data.calibrate = calib;
- return hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_CALIBRATE, &bhi);
- }
+ bhi.data.calibrate = calib;
+ return hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_CALIBRATE, &bhi);
msg.hdr.type = USERSM_CMD_CALIBRATE;
msg.hdr.channel = 0;
msg.data.calib = calib;
@@ -524,19 +495,17 @@ int hdrvc_get_channel_state(struct hdrvc_channel_state *st)
errno = EINVAL;
return -1;
}
- if (kernel_mode) {
- ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETSTAT, &bhi);
- if (ret >= 0) {
- st->ptt = bhi.data.cs.ptt;
- st->dcd = bhi.data.cs.dcd;
- st->ptt_keyed = bhi.data.cs.ptt_keyed;
- st->tx_packets = bhi.data.cs.tx_packets;
- st->tx_errors = bhi.data.cs.tx_errors;
- st->rx_packets = bhi.data.cs.rx_packets;
- st->rx_errors = bhi.data.cs.rx_errors;
- }
- return ret;
- }
+ ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETSTAT, &bhi);
+ if (ret >= 0) {
+ st->ptt = bhi.data.cs.ptt;
+ st->dcd = bhi.data.cs.dcd;
+ st->ptt_keyed = bhi.data.cs.ptt_keyed;
+ st->tx_packets = bhi.data.cs.tx_packets;
+ st->tx_errors = bhi.data.cs.tx_errors;
+ st->rx_packets = bhi.data.cs.rx_packets;
+ st->rx_errors = bhi.data.cs.rx_errors;
+ }
+ return ret;
msg.hdr.type = USERSM_CMD_REQ_CHANNELSTATE;
msg.hdr.channel = 0;
hdrvc_sendmsg(&msg, 0);
@@ -573,25 +542,24 @@ int hdrvc_diag2(unsigned int mode, unsigned int flags, short *data,
errno = EINVAL;
return -1;
}
- if (kernel_mode) {
- struct sm_ioctl smi;
- static unsigned int modeconvsm[4] = {
- SM_DIAGMODE_OFF, SM_DIAGMODE_INPUT, SM_DIAGMODE_DEMOD, SM_DIAGMODE_CONSTELLATION
- };
-
- smi.data.diag.mode = modeconvsm[mode];
- smi.data.diag.flags = (flags & HDRVC_DIAGFLAG_DCDGATE) ? SM_DIAGFLAG_DCDGATE : 0;
- smi.data.diag.samplesperbit = 0;
- smi.data.diag.datalen = maxdatalen;
- smi.data.diag.data = data;
- if ((ret = hdrvc_sm_ioctl(SMCTL_DIAGNOSE, &smi)) < 0)
- return ret;
- if (samplesperbit)
- *samplesperbit = smi.data.diag.samplesperbit;
- if (smi.data.diag.mode != modeconvsm[mode] || !(smi.data.diag.flags & SM_DIAGFLAG_VALID))
- return 0;
- return smi.data.diag.datalen;
- }
+ struct sm_ioctl smi;
+ static unsigned int modeconvsm[4] = {
+ SM_DIAGMODE_OFF, SM_DIAGMODE_INPUT, SM_DIAGMODE_DEMOD,
+ SM_DIAGMODE_CONSTELLATION
+ };
+
+ smi.data.diag.mode = modeconvsm[mode];
+ smi.data.diag.flags = (flags & HDRVC_DIAGFLAG_DCDGATE) ? SM_DIAGFLAG_DCDGATE : 0;
+ smi.data.diag.samplesperbit = 0;
+ smi.data.diag.datalen = maxdatalen;
+ smi.data.diag.data = data;
+ if ((ret = hdrvc_sm_ioctl(SMCTL_DIAGNOSE, &smi)) < 0)
+ return ret;
+ if (samplesperbit)
+ *samplesperbit = smi.data.diag.samplesperbit;
+ if (smi.data.diag.mode != modeconvsm[mode] || !(smi.data.diag.flags & SM_DIAGFLAG_VALID))
+ return 0;
+ return smi.data.diag.datalen;
msg.hdr.type = USERSM_CMD_REQ_DIAG;
msg.hdr.channel = 0;
msg.data.diag.mode = modeconvusersm[mode];
@@ -623,15 +591,13 @@ int hdrvc_get_driver_name(char *buf, int bufsz)
int ret;
struct usersmmsg msg;
- if (kernel_mode) {
- struct hdlcdrv_ioctl bhi;
+ struct hdlcdrv_ioctl bhi;
- ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_DRIVERNAME, &bhi);
- if (ret < 0)
- return ret;
- strncpy(buf, bhi.data.modename, bufsz);
- return 0;
- }
+ ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_DRIVERNAME, &bhi);
+ if (ret < 0)
+ return ret;
+ strncpy(buf, bhi.data.modename, bufsz);
+ return 0;
msg.hdr.type = USERSM_CMD_REQ_DRVNAME;
msg.hdr.channel = 0;
hdrvc_sendmsg(&msg, 0);
@@ -656,15 +622,13 @@ int hdrvc_get_mode_name(char *buf, int bufsz)
int ret;
struct usersmmsg msg;
- if (kernel_mode) {
- struct hdlcdrv_ioctl bhi;
+ struct hdlcdrv_ioctl bhi;
- ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETMODE, &bhi);
- if (ret < 0)
- return ret;
- strncpy(buf, bhi.data.modename, bufsz);
- return 0;
- }
+ ret = hdrvc_hdlcdrv_ioctl(HDLCDRVCTL_GETMODE, &bhi);
+ if (ret < 0)
+ return ret;
+ strncpy(buf, bhi.data.modename, bufsz);
+ return 0;
msg.hdr.type = USERSM_CMD_REQ_DRVMODE;
msg.hdr.channel = 0;
hdrvc_sendmsg(&msg, 0);