[
  [
    "udhcp-0.9.8.orig/options.c", 
    "udhcp-0.9.8/options.c", 
    [
      "diff -ur udhcp-0.9.8.orig/options.c udhcp-0.9.8/options.c", 
      "--- udhcp-0.9.8.orig/options.c", 
      "+++ udhcp-0.9.8/options.c", 
      "@@ -34,6 +34,7 @@", 
      "{\"ipttl\",\tOPTION_U8,\t\t\t\t0x17},", 
      "{\"mtu\",\t\tOPTION_U16,\t\t\t\t0x1a},", 
      "{\"broadcast\",\tOPTION_IP | OPTION_REQ,\t\t\t0x1c},", 
      "+\t{\"sroutes\",\tOPTION_IP_PAIR | OPTION_LIST | OPTION_REQ, 0x21},", 
      "{\"ntpsrv\",\tOPTION_IP | OPTION_LIST,\t\t0x2a},", 
      "{\"wins\",\tOPTION_IP | OPTION_LIST,\t\t0x2c},", 
      "{\"requestip\",\tOPTION_IP,\t\t\t\t0x32},", 
      "@@ -47,6 +48,7 @@", 
      "{\"loghost\",     OPTION_STRING | OPTION_REQ,             0x81},", 
      "{\"logport\",     OPTION_STRING | OPTION_REQ,             0x82},", 
      "{\"tcplog\",      OPTION_STRING | OPTION_REQ,             0x96},", 
      "+ \t{\"sroutes\",     OPTION_ROUTE | OPTION_LIST | OPTION_REQ, 0x79},", 
      "{\"\",\t\t0x00,\t\t\t\t0x00}", 
      "};", 
      "", 
      "@@ -54,6 +56,7 @@", 
      "int option_lengths[] = {", 
      "[OPTION_IP] =\t\t4,", 
      "[OPTION_IP_PAIR] =\t8,", 
      "+\t[OPTION_ROUTE] =\t5,", 
      "[OPTION_BOOLEAN] =\t1,", 
      "[OPTION_STRING] =\t1,", 
      "[OPTION_U8] =\t\t1,"
    ]
  ], 
  [
    "udhcp-0.9.8.orig/options.h", 
    "udhcp-0.9.8/options.h", 
    [
      "diff -ur udhcp-0.9.8.orig/options.h udhcp-0.9.8/options.h", 
      "--- udhcp-0.9.8.orig/options.h", 
      "+++ udhcp-0.9.8/options.h", 
      "@@ -9,6 +9,7 @@", 
      "enum {", 
      "OPTION_IP=1,", 
      "OPTION_IP_PAIR,", 
      "+\tOPTION_ROUTE,", 
      "OPTION_STRING,", 
      "OPTION_BOOLEAN,", 
      "OPTION_U8,"
    ]
  ], 
  [
    "udhcp-0.9.8.orig/script.c", 
    "udhcp-0.9.8/script.c", 
    [
      "diff -ur udhcp-0.9.8.orig/script.c udhcp-0.9.8/script.c", 
      "--- udhcp-0.9.8.orig/script.c", 
      "+++ udhcp-0.9.8/script.c", 
      "@@ -41,6 +41,7 @@", 
      "static int max_option_length[] = {", 
      "[OPTION_IP] =\t\tsizeof(\"255.255.255.255 \"),", 
      "[OPTION_IP_PAIR] =\tsizeof(\"255.255.255.255 \") * 2,", 
      "+\t[OPTION_ROUTE] =\tsizeof(\"255.255.255.255 \") * 3,", 
      "[OPTION_STRING] =\t1,", 
      "[OPTION_BOOLEAN] =\tsizeof(\"yes \"),", 
      "[OPTION_U8] =\t\tsizeof(\"255 \"),", 
      "@@ -63,6 +64,31 @@", 
      "}", 
      "", 
      "", 
      "+static int sprintroute(char *dest, unsigned char *route) {", 
      "+ \tint dest_length = (route[0] >> 3) + !!(route[0] & 7);", 
      "+ \tunsigned char* router = route + dest_length + 1;", 
      "+ \tunsigned char ip[4];", 
      "+ \tunsigned char netmask[4];", 
      "+ \tunsigned int* temp = (unsigned int*)netmask;", 
      "+ \tint i;", 
      "+ \tfor (i = 0; i < 4; ++i) {", 
      "+ \t\tif (i < dest_length) {", 
      "+ \t\t\tip[i] = route[i + 1];", 
      "+ \t\t} else {", 
      "+ \t\t\tip[i] = 0;", 
      "+ \t\t}", 
      "+ \t\tnetmask[i] = 0;", 
      "+ \t}", 
      "+ \tfor (i = 0; i < route[0]; ++i) {", 
      "+ \t\t*temp |= (1L << i);", 
      "+ \t}", 
      "+ \treturn sprintf(dest, \"%d.%d.%d.%d/%d.%d.%d.%d/%d.%d.%d.%d \",", 
      "+ \t\t       ip[0], ip[1], ip[2], ip[3],", 
      "+ \t\t       netmask[0], netmask[1], netmask[2], netmask[3],", 
      "+ \t\t       router[0], router[1], router[2], router[3]);", 
      "+}", 
      "+", 
      "+", 
      "/* Fill dest with the text of option 'option'. */", 
      "static void fill_options(char *dest, unsigned char *option, struct dhcp_option *type_p)", 
      "{", 
      "@@ -89,6 +115,10 @@", 
      "dest += sprintip(dest, \"\", option);", 
      "*(dest++) = ' ';", 
      "break;", 
      "+\t\tcase OPTION_ROUTE:", 
      "+\t\t\tdest += sprintroute(dest, option);", 
      "+\t\t\toptlen = 1 + (option[0] >> 3) + !!(option[0] & 7) + 4;", 
      "+ \t\t\tbreak;", 
      "case OPTION_BOOLEAN:", 
      "dest += sprintf(dest, *option ? \"yes \" : \"no \");", 
      "break;"
    ]
  ]
]