diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2016-04-17 14:29:36 +0300 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2016-04-17 14:29:36 +0300 |
commit | eb3b85388944b4e15b6db2db99d136f538384c4e (patch) | |
tree | 64a7fa8cc1d27059bf411198259939745e4bf34a /accel-pppd/ppp | |
parent | b80e64a320b22c0e966ec1e42bda4929d5a748ec (diff) | |
download | accel-ppp-eb3b85388944b4e15b6db2db99d136f538384c4e.tar.gz accel-ppp-eb3b85388944b4e15b6db2db99d136f538384c4e.zip |
preparation for DPDK intergation (part 7)
Diffstat (limited to 'accel-pppd/ppp')
-rw-r--r-- | accel-pppd/ppp/ppp.c | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/accel-pppd/ppp/ppp.c b/accel-pppd/ppp/ppp.c index ab67aa21..f05b47bb 100644 --- a/accel-pppd/ppp/ppp.c +++ b/accel-pppd/ppp/ppp.c @@ -93,11 +93,8 @@ int __export establish_ppp(struct ppp_t *ppp) } fcntl(ppp->chan_fd, F_SETFD, fcntl(ppp->chan_fd, F_GETFD) | FD_CLOEXEC); - if (fcntl(ppp->chan_fd, F_SETFL, O_NONBLOCK)) { - log_ppp_error("ppp: cannot set nonblocking mode: %s\n", - strerror(errno)); - goto exit_close_chan; - } + + net->set_nonblocking(ppp->chan_fd, 1); if (net->ppp_ioctl(ppp->chan_fd, PPPIOCATTCHAN, &ppp->chan_idx) < 0) { log_ppp_error("ioctl(PPPIOCATTCHAN): %s\n", strerror(errno)); @@ -357,18 +354,14 @@ static int ppp_chan_read(struct triton_md_handler_t *h) cont: ppp->buf_size = net->read(h->fd, ppp->buf, PPP_BUF_SIZE); if (ppp->buf_size < 0) { - if (errno != EAGAIN) + if (errno != EAGAIN) { log_ppp_error("ppp_chan_read: %s\n", strerror(errno)); + ap_session_terminate(&ppp->ses, TERM_NAS_ERROR, 1); + return 1; + } break; } - //printf("ppp_chan_read: "); - //print_buf(ppp->buf,ppp->buf_size); - if (ppp->buf_size == 0) { - ap_session_terminate(&ppp->ses, TERM_NAS_ERROR, 1); - return 1; - } - if (ppp->buf_size < 2) { log_ppp_error("ppp_chan_read: short read %i\n", ppp->buf_size); continue; @@ -409,21 +402,14 @@ static int ppp_unit_read(struct triton_md_handler_t *h) cont: ppp->buf_size = net->read(h->fd, ppp->buf, PPP_BUF_SIZE); if (ppp->buf_size < 0) { - if (errno != EAGAIN) + if (errno != EAGAIN) { log_ppp_error("ppp_unit_read: %s\n",strerror(errno)); + ap_session_terminate(&ppp->ses, TERM_NAS_ERROR, 1); + return 1; + } break; } - //printf("ppp_unit_read: %i\n", ppp->buf_size); - if (ppp->buf_size == 0) - return 0; - //print_buf(ppp->buf,ppp->buf_size); - - /*if (ppp->buf_size == 0) { - ap_session_terminate(ppp, TERM_NAS_ERROR, 1); - return 1; - }*/ - if (ppp->buf_size < 2) { log_ppp_error("ppp_unit_read: short read %i\n", ppp->buf_size); continue; |