summaryrefslogtreecommitdiff
path: root/accel-pppd/ppp/ppp.c
diff options
context:
space:
mode:
Diffstat (limited to 'accel-pppd/ppp/ppp.c')
-rw-r--r--accel-pppd/ppp/ppp.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/accel-pppd/ppp/ppp.c b/accel-pppd/ppp/ppp.c
index b541ba5..7406bf7 100644
--- a/accel-pppd/ppp/ppp.c
+++ b/accel-pppd/ppp/ppp.c
@@ -88,6 +88,8 @@ static void generate_sessionid(struct ppp_t *ppp)
int __export establish_ppp(struct ppp_t *ppp)
{
+ struct ifreq ifr;
+
/* Open an instance of /dev/ppp and connect the channel to it */
if (ioctl(ppp->fd, PPPIOCGCHAN, &ppp->chan_idx) == -1) {
log_ppp_error("ioctl(PPPIOCGCHAN): %s\n", strerror(errno));
@@ -136,8 +138,17 @@ int __export establish_ppp(struct ppp_t *ppp)
generate_sessionid(ppp);
sprintf(ppp->ifname, "ppp%i", ppp->unit_idx);
+ memset(&ifr, 0, sizeof(ifr));
+ strcpy(ifr.ifr_name, ppp->ifname);
+
+ if (ioctl(sock_fd, SIOCGIFINDEX, &ifr)) {
+ log_ppp_error("ppp: ioctl(SIOCGIFINDEX): %s\n", strerror(errno));
+ goto exit_close_unit;
+ }
+ ppp->ifindex = ifr.ifr_ifindex;
+
log_ppp_info1("connect: %s <--> %s(%s)\n", ppp->ifname, ppp->ctrl->name, ppp->chan_name);
-
+
init_layers(ppp);
if (list_empty(&ppp->layers)) {