Index: rp-pppoe-3.12/doc/HOW-TO-CONNECT
===================================================================
--- rp-pppoe-3.12.orig/doc/HOW-TO-CONNECT	2015-11-11 16:10:00.000000000 +0100
+++ rp-pppoe-3.12/doc/HOW-TO-CONNECT	2022-01-20 11:38:35.900602615 +0100
@@ -21,14 +21,15 @@ visible to the Linux kernel.  Just how t
 of this document.  However, if the card is the only Ethernet card in
 the system, executing:
 
-	ifconfig eth0
+	ip link show eth0
 
 should display something like this:
 
-	eth0      Link encap:Ethernet  HWaddr 00:60:67:62:31:D4
+	2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
+    link/ether fc:aa:15:39:a7:b3 brd ff:ff:ff:ff:ff:ff
 
-plust some more lines.  Your HWaddr will be different.  As long as you see
-the HWaddr line, your card should be working.
+Your second line will most definately be different.  As long as you see
+the link/ether line, your card should be working.
 
 DO NOT assign an IP address to the Ethernet card.  DO NOT configure the
 card to come up at boot time.
@@ -119,8 +120,8 @@ hosts to the LAN, but consumes some extr
 
 If you want to manually configure the LAN hosts, here's how:
 
-In Linux, use: "ifconfig eth0 mtu 1452".  For best results, put this
-in an /etc/rc.d/rc.local script.
+In Linux, use: "ip link set eth0 mtu 1452".  For best results, put
+this in an /etc/rc.d/rc.local script.
 
 For Windows, machines, see http://lan.cns.ksu.edu/OS/WIN95/slip95.htm.
 Set the MaxMTU to 1452.
@@ -134,8 +135,8 @@ As root, bring down the link by typing:
 That's it!
 
 --
-Dianne Skoll <dfs@roaringpenguin.com> | Roaring Penguin Software Inc.
-http://www.roaringpenguin.com           |
+Dianne Skoll <dianne@skoll.ca>
+https://dianne.skoll.ca/projects/rp-pppoe/           |
 
 PROBLEMS!  DIANNE, IT DOESN'T WORK!
 ---------------------------------
@@ -145,11 +146,13 @@ Here are some problems PPPoE users have
 -----------------------------------------------------------------------------
 A) Can't see the Ethernet interface
 
-Well, I can't really help you here.  To use these instructions, you must
-have Linux working to the point where it recognizes your Ethernet card.
-If you type "ifconfig ethx" and you get back a HWAddr value, your Ethernet
-card is probably OK.  But I really can't help with hardware configuration
-issues.
+Well, I can't really help you here.  To use these instructions, you
+must have Linux working to the point where it recognizes your Ethernet
+card.  If you type "ip link show ethx" and you get back a hardware
+address value in the line that begins with link/ether, your Ethernet
+card is probably OK.  But I really can't help with hardware
+configuration issues.
+
 
 -----------------------------------------------------------------------------
 B) Connection seems to come up, but I can't browse the web or ping anything
@@ -224,9 +227,10 @@ problem, give the Ethernet card connecte
 address.  For example, if eth0 is your internal LAN card and eth1 goes to
 the DSL modem, do something like this:
 
-	ifconfig eth1 10.0.0.1 netmask 255.255.255.0
+	ip link set eth1 10.0.0.1/24
+
+(You may have to choose a different IP address and prefix; experiment.)
 
-(You may have to choose a different IP address; experiment.)
 -----------------------------------------------------------------------------
 K) How can I run a script every time I connect and get a new IP address?
 
@@ -262,7 +266,7 @@ Make sure no entries in the routing tabl
 connected to the DSL modem.  You might want to add these lines in
 pppoe-connect:
 
-	ifconfig ethx down
-	ifconfig ethx up mtu 1500
+        ip link set ethx down
+	ip link set  ethx up mtu 1500
 
 which should reset things to sane values.
Index: rp-pppoe-3.12/gui/tkpppoe.in
===================================================================
--- rp-pppoe-3.12.orig/gui/tkpppoe.in	2015-11-11 16:09:58.000000000 +0100
+++ rp-pppoe-3.12/gui/tkpppoe.in	2022-01-20 11:37:25.936150975 +0100
@@ -1573,9 +1573,9 @@ proc SetButtonStates {} {
 #***********************************************************************
 proc GetEthernetInterfaces {} {
     set ifs {}
-    set fp [open "|/sbin/ifconfig" "r"]
+    set fp [open "|@IP@ -o link show" "r"]
     while {[gets $fp line] >= 0} {
-	if {[regexp {^eth[0-9]+} $line eth]} {
+	if {[regexp {eth[0-9]+} $line eth]} {
 	    lappend ifs $eth
 	}
     }
Index: rp-pppoe-3.12/man/pppoe-sniff.8
===================================================================
--- rp-pppoe-3.12.orig/man/pppoe-sniff.8	2015-11-11 16:10:01.000000000 +0100
+++ rp-pppoe-3.12/man/pppoe-sniff.8	2022-01-20 11:37:25.936150975 +0100
@@ -31,7 +31,7 @@ and start \fBpppoe-sniff\fR.  If the eth
 for example, type these commands:
 
 .nf
-	ifconfig eth0 promisc
+	ip link set eth0 promisc on
 	pppoe-sniff -I eth0
 .fi
 
@@ -48,7 +48,7 @@ After \fBpppoe-sniff\fR finishes (or you
 remember to turn off promiscuous mode:
 
 .nf
-	ifconfig eth0 -promisc
+	ip link set eth0 promisc on
 .fi
 
 .SH OPTIONS
Index: rp-pppoe-3.12/scripts/pppoe-connect.in
===================================================================
--- rp-pppoe-3.12.orig/scripts/pppoe-connect.in	2022-01-20 11:37:25.904150768 +0100
+++ rp-pppoe-3.12/scripts/pppoe-connect.in	2022-01-20 11:37:25.936150975 +0100
@@ -28,6 +28,7 @@ exec_prefix=@exec_prefix@
 localstatedir=/var
 
 # Paths to programs
+IP=@IP@
 IFCONFIG=/sbin/ifconfig
 PPPD=@PPPD@
 SETSID=@SETSID@
@@ -115,11 +116,7 @@ fi
 # fails on some *BSD's, so we'll only do it under Linux
 
 if test `uname -s` = Linux ; then
-    $IFCONFIG $ETH up
-    EXISTING_MTU=`$IFCONFIG $ETH 2> /dev/null | grep MTU: | sed -e 's/.*MTU://' | sed -e 's/[^0-9].*//'`
-    if test "$EXISTING_MTU" = "" -o "$EXISTING_MTU" -lt 1500 ; then
-	$IFCONFIG $ETH mtu 1500
-    fi
+    $IP link set $ETH up mtu 1500
 
     # For 2.4 kernels.  Will fail on 2.2.x, but who cares?
     modprobe ppp_generic > /dev/null 2>&1
@@ -129,12 +126,14 @@ if test `uname -s` = Linux ; then
 	modprobe pppox > /dev/null 2>&1
 	modprobe pppoe > /dev/null 2>&1
     fi
+else
+    $IFCONFIG $ETH up
 fi
 
 if test "$SYNCHRONOUS" = "yes" ; then
     PPPOE_SYNC=-s
     PPPD_SYNC=sync
-	# Increase the chances of it working on Linux...
+    # Increase the chances of it working on Linux...
     if test `uname -s` = Linux ; then
 	modprobe n_hdlc > /dev/null 2>&1
     fi
Index: rp-pppoe-3.12/scripts/pppoe-setup.in
===================================================================
--- rp-pppoe-3.12.orig/scripts/pppoe-setup.in	2022-01-20 11:37:25.884150639 +0100
+++ rp-pppoe-3.12/scripts/pppoe-setup.in	2022-01-20 11:37:25.936150975 +0100
@@ -18,6 +18,7 @@ exec_prefix=@exec_prefix@
 
 # Paths to programs
 IFCONFIG=/sbin/ifconfig
+IP=@IP@
 PPPD=@PPPD@
 PPPOE=@sbindir@/pppoe
 ECHO=@ECHO@
@@ -94,6 +95,8 @@ while [ true ] ; do
 
     # Under Linux, "fix" the default interface if eth1 is not available
     if test `uname -s` = "Linux" ; then
+        $IP link show $ETH > /dev/null 2>&1 || ETH=eth0
+    else
 	$IFCONFIG $ETH > /dev/null 2>&1 || ETH=eth0
     fi
     $ECHO ""
Index: rp-pppoe-3.12/scripts/pppoe-start.in
===================================================================
--- rp-pppoe-3.12.orig/scripts/pppoe-start.in	2022-01-20 11:37:25.936150975 +0100
+++ rp-pppoe-3.12/scripts/pppoe-start.in	2022-01-20 11:43:52.006643088 +0100
@@ -29,7 +29,7 @@ exec_prefix=@exec_prefix@
 # Paths to programs
 CONNECT=@sbindir@/pppoe-connect
 ECHO=@ECHO@
-IFCONFIG=/sbin/ifconfig
+IP=@IP@
 
 # Set to "C" locale so we can parse messages from commands
 LANG=C
@@ -69,8 +69,8 @@ if [ "$DEBUG" = "1" ] ; then
     $ECHO "* interfaces.  The one you chose for PPPoE should contain the words:" >> $DEBUG
     $ECHO "* 'UP' and 'RUNNING'.  If it does not, you probably have an Ethernet" >> $DEBUG
     $ECHO "* driver problem." >> $DEBUG
-    $ECHO "Output of ifconfig -a" >> $DEBUG
-    $IFCONFIG -a >> $DEBUG
+    $ECHO "Output of ip link show" >> $DEBUG
+    $IP link show >> $DEBUG
     $ECHO "---------------------------------------------" >> $DEBUG
     if [ "`uname -s`" = "Linux" ] ; then
         $ECHO "* The following section contains information about kernel modules" >> $DEBUG
@@ -85,8 +85,8 @@ if [ "$DEBUG" = "1" ] ; then
     $ECHO "* have defined a default route and gateway, and pppd will" >> $DEBUG
     $ECHO "* not create a default route using your ISP.  Try getting" >> $DEBUG
     $ECHO "* rid of this route." >> $DEBUG
-    $ECHO "Output of netstat -n -r" >> $DEBUG
-    netstat -n -r >> $DEBUG
+    $ECHO "Output of ip route" >> $DEBUG
+    $IP route >> $DEBUG
     $ECHO "---------------------------------------------" >> $DEBUG
     $ECHO "Contents of /etc/resolv.conf" >> $DEBUG
     $ECHO "* The following section lists DNS setup." >> $DEBUG
Index: rp-pppoe-3.12/scripts/pppoe-status
===================================================================
--- rp-pppoe-3.12.orig/scripts/pppoe-status	2015-11-11 16:10:02.000000000 +0100
+++ rp-pppoe-3.12/scripts/pppoe-status	2022-01-20 11:37:25.936150975 +0100
@@ -21,6 +21,7 @@
 
 # Defaults
 CONFIG=/etc/ppp/pppoe.conf
+PATH=/bin:/usr/bin:/sbin:/usr/sbin:$PATH IP=`which ip`
 
 case "$#" in
     1)
@@ -66,14 +67,13 @@ for i in /etc/ppp/ppp*.pid /var/run/ppp*
 	PID=`cat $i`
 	if [ "$PID" = "$PPPD_PID" ] ; then
 	    IF=`basename $i .pid`
-	    netstat -rn | grep " ${IF}\$" > /dev/null
-	    # /sbin/ifconfig $IF | grep "UP.*POINTOPOINT" > /dev/null
+	    $IP route | grep "dev ${IF}" > /dev/null
 	    if [ "$?" != "0" ] ; then
 		echo "pppoe-status: Link is attached to $IF, but $IF is down"
 		exit 1
 	    fi
 	    echo "pppoe-status: Link is up and running on interface $IF"
-	    /sbin/ifconfig $IF
+	    $IP link show $IF
 	    exit 0
 	fi
     fi
Index: rp-pppoe-3.12/src/configure
===================================================================
--- rp-pppoe-3.12.orig/src/configure	2015-11-11 16:10:03.000000000 +0100
+++ rp-pppoe-3.12/src/configure	2022-01-20 11:37:25.936150975 +0100
@@ -636,6 +636,7 @@ ID
 SETSID
 ECHO
 PPPD
+IP
 INSTALL_DATA
 INSTALL_SCRIPT
 INSTALL_PROGRAM
@@ -3966,7 +3967,7 @@ if test "$ac_cv_pluginpath" = "yes" ; th
 fi
 
 if test "$ac_cv_pluginpath" = "yes" ; then
-    echo "*** Could not fined pppd/pppd.h anywhere... not building plugin"
+    echo "*** Could not find pppd/pppd.h anywhere... not building plugin"
     ac_cv_pluginpath=no
 fi
 
@@ -4364,6 +4365,49 @@ _ACEOF
 
 
 
+# Extract the first word of "ip", so it can be a program name with args.
+set dummy ip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_IP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $IP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_IP="$IP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/bin:/sbin:/usr/bin:/usr/sbin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_IP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_IP" && ac_cv_path_IP="NOTFOUND"
+  ;;
+esac
+fi
+IP=$ac_cv_path_IP
+if test -n "$IP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IP" >&5
+$as_echo "$IP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
 # Extract the first word of "pppd", so it can be a program name with args.
 set dummy pppd; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
Index: rp-pppoe-3.12/src/configure.in
===================================================================
--- rp-pppoe-3.12.orig/src/configure.in	2015-11-11 16:10:03.000000000 +0100
+++ rp-pppoe-3.12/src/configure.in	2022-01-20 11:37:25.936150975 +0100
@@ -142,6 +142,9 @@ AC_CHECK_SIZEOF(unsigned short)
 AC_CHECK_SIZEOF(unsigned int)
 AC_CHECK_SIZEOF(unsigned long)
 
+dnl Check for location of ip
+AC_PATH_PROG(IP, ip, NOTFOUND, $PATH:/bin:/sbin:/usr/bin:/usr/sbin)
+
 dnl Check for location of pppd
 AC_PATH_PROG(PPPD, pppd, NOTFOUND, $PATH:/sbin:/usr/sbin:/usr/local/sbin)
 AC_PATH_PROG(ECHO, echo, echo)
Index: rp-pppoe-3.12/src/pppoe.c
===================================================================
--- rp-pppoe-3.12.orig/src/pppoe.c	2015-11-11 16:10:04.000000000 +0100
+++ rp-pppoe-3.12/src/pppoe.c	2022-01-20 11:37:25.936150975 +0100
@@ -669,10 +669,10 @@ main(int argc, char *argv[])
 	exit(EXIT_SUCCESS);
     }
 
-    /* Set signal handlers: send PADT on HUP; ignore TERM and INT */
-    signal(SIGTERM, SIG_IGN);
-    signal(SIGINT, SIG_IGN);
-    signal(SIGHUP, sigPADT);
+    /* Set signal handlers: send PADT on HUP, TERM and INT */
+    signal(SIGTERM, sigPADT);
+    signal(SIGINT,  sigPADT);
+    signal(SIGHUP,  sigPADT);
     session(&conn);
     return 0;
 }
