code: def start_ppp_link(self):
          '''startup the link'''
          cmd = ['pppd']
          cmd.extend(self.command)
          (self.pid, self.ppp_fd) = pty.fork()
          if self.pid == 0:
              os.execvp("pppd", cmd)
              raise RuntimeError("pppd exited")
          if self.ppp_fd == -1:
              print("Failed to create link fd")
              return
  
          # ensure fd is non-blocking
          fcntl.fcntl(self.ppp_fd, fcntl.F_SETFL, fcntl.fcntl(self.ppp_fd, fcntl.F_GETFL) | os.O_NONBLOCK)
          self.byte_count = 0
          self.packet_count = 0
  
          # ask mavproxy to add us to the select loop
          self.mpself.select_extra[self.ppp_fd] = (self.ppp_read, self.ppp_fdf start_ppp_link(self):
          '''startup the link'''
          cmd = ['pppd']
          cmd.extend(self.command)
          (self.pid, self.ppp_fd) = pty.fork()
          if self.pid == 0:
              os.execvp("pppd", cmd)
              raise RuntimeError("pppd exited")
          if self.ppp_fd == -1:
              print("Failed to create link fd")
              return
  
          # ensure fd is non-blocking
          fcntl.fcntl(self.ppp_fd, fcntl.F_SETFL, fcntl.fcntl(self.ppp_fd, fcntl.F_GETFL) | os.O_NONBLOCK)
          self.byte_count = 0
          self.packet_count = 0
  
          # ask mavproxy to add us to the select loop
          self.mpself.select_extra[self.ppp_fd] = (self.ppp_read, self.ppp_fd)
docs: startup the link