Справочник по консольным командам Toybox для Android 12


  Ver.0.8.4     Ver.0.8.9     Pending  

Путь: Toys/Pending, команды версии: Ver.4     Ver.9


dumpleases

Комментарии в файле dumpleases.c :

usage: dumpleases [-r|-a] [-f LEASEFILE]

Показать аренду DHCP, предоставленную udhcpd
  • -f ФАЙЛ, Аренда файла
  • -r Показать оставшееся время
  • -a Показать время истечения срока действия

  • usage: dumpleases [-r|-a] [-f LEASEFILE]

    Display DHCP leases granted by udhcpd
  • -f FILE, Lease file
  • -r Show remaining time
  • -a Show expiration time

  • Исходный текст в файле dumpleases.c

    #define FOR_dumpleases
    #include "toys.h"
    
    GLOBALS(
        char *file;
    )
    
    //lease structure
    struct lease { 
      uint32_t expires;
      uint32_t lease_nip;
      uint8_t lease_mac[6];
      char hostname[20];
      uint8_t pad[2]; //Padding
    };
    
    void dumpleases_main(void)
    {
      struct in_addr addr;
      struct lease lease_struct;
      int64_t written_time , current_time, exp;
      int i, fd; 
      
      if(!(toys.optflags & FLAG_f)) TT.file = "/var/lib/misc/dhcpd.leases"; //DEF_LEASE_FILE
      fd = xopenro(TT.file);
      xprintf("Mac Address       IP Address      Host Name           Expires %s\n", (toys.optflags & FLAG_a) ? "at" : "in");
      xread(fd, &written_time, sizeof(written_time));
      current_time = time(NULL);
      written_time = SWAP_BE64(written_time);
      if(current_time < written_time) written_time = current_time;
    
      while(sizeof(lease_struct) == 
          (readall(fd, &lease_struct, sizeof(lease_struct)))) {
        for (i = 0; i < 6; i++) printf(":%02x"+ !i, lease_struct.lease_mac[i]);
        
        addr.s_addr = lease_struct.lease_nip;
        lease_struct.hostname[19] = '\0';
        xprintf(" %-16s%-20s", inet_ntoa(addr), lease_struct.hostname );
        exp = ntohl(lease_struct.expires) + written_time;
        if (exp <= current_time) {
          xputs("expired");
          continue;
        }
        if (!(toys.optflags & FLAG_a)) { 
          unsigned dt, hr, m;
          unsigned expires = exp - current_time;
          dt = expires / (24*60*60); expires %= (24*60*60);
          hr = expires / (60*60); expires %= (60*60);
          m = expires / 60; expires %= 60;
          if (dt) xprintf("%u days ", dt);
          xprintf("%02u:%02u:%02u\n", hr, m, (unsigned)expires);
        } else {
          fputs(ctime((const time_t*)&exp), stdout);
        }
      }
      xclose(fd);
    }