udhcp: finish support of classless static routes
authorMichael McTernan <Michael.McTernan.2001@cs.bris.ac.uk>
Fri, 16 Dec 2011 16:05:52 +0000 (17:05 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 16 Dec 2011 16:05:52 +0000 (17:05 +0100)
function                                             old     new   delta
udhcp_str2optset                                     415     532    +117

Signed-off-by: Michael McTernan <Michael.McTernan.2001@cs.bris.ac.uk>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
examples/udhcp/udhcpd.conf
include/xatonum.h

index cd2957c..eca44c0 100644 (file)
@@ -68,6 +68,8 @@ opt   wins    192.168.10.10
 option dns     129.219.13.81   # appended to above DNS servers for a total of 3
 option domain  local
 option lease   864000          # default: 10 days
+option msstaticroutes  10.0.0.0/8 10.127.0.1           # single static route
+option staticroutes    10.0.0.0/8 10.127.0.1, 10.11.12.0/24 10.11.12.1
 # Arbitrary option in hex form:
 option 0x08    01020304        # option 8: "cookie server IP addr: 1.2.3.4"
 
@@ -101,6 +103,8 @@ option      0x08    01020304        # option 8: "cookie server IP addr: 1.2.3.4"
 #opt swapsrv    IP
 # Options specifying routes
 #opt routes     IP_PAIR_LIST
+#opt staticroutes   STATIC_ROUTES # RFC 3442 classless static route option
+#opt msstaticroutes STATIC_ROUTES # same, using MS option number
 # Obsolete options, no longer supported
 #opt logsrv     IP_LIST        # 704/UDP log server (not syslog!)
 #opt namesrv    IP_LIST        # IEN 116 name server, obsolete (August 1979!!!)
@@ -109,5 +113,3 @@ option      0x08    01020304        # option 8: "cookie server IP addr: 1.2.3.4"
 # TODO: in development
 #opt userclass  STRING         # RFC 3004. set of LASCII strings. "I am a printer" etc
 #opt sipserv    STRING LIST    # RFC 3361. flag byte, then: 0: domain names, 1: IP addrs
-#opt staticroutes   STATIC_ROUTES
-#opt msstaticroutes STATIC_ROUTES
index 6f76a3c..45ebbfc 100644 (file)
@@ -168,6 +168,15 @@ uint32_t bb_strtou32(const char *arg, char **endp, int base)
                return bb_strtoul(arg, endp, base);
        return BUG_bb_strtou32_unimplemented();
 }
+static ALWAYS_INLINE
+int32_t bb_strtoi32(const char *arg, char **endp, int base)
+{
+       if (sizeof(int32_t) == sizeof(int))
+               return bb_strtoi(arg, endp, base);
+       if (sizeof(int32_t) == sizeof(long))
+               return bb_strtol(arg, endp, base);
+       return BUG_bb_strtou32_unimplemented();
+}
 
 /* Floating point */