]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Added authentication support.
authorDamien Neil <source@isc.org>
Thu, 3 Aug 2000 22:45:43 +0000 (22:45 +0000)
committerDamien Neil <source@isc.org>
Thu, 3 Aug 2000 22:45:43 +0000 (22:45 +0000)
dhcpctl/test.c

index 0caefa82c8e6ea4757243e5d58727d668fa003ad..219cf1f6e2ec3e19585e033079a8ef33e3b7323e 100644 (file)
 
 int main (int, char **);
 
+static void usage (char *s) {
+       fprintf (stderr,
+                "Usage: %s [-n <username>] [-p <password>] "
+                "[-a <algorithm>]\n", s);
+       exit (1);
+}
+
 int main (argc, argv)
        int argc;
        char **argv;
 {
        isc_result_t status, waitstatus;
        dhcpctl_handle connection;
+       dhcpctl_handle authenticator;
        dhcpctl_handle host_handle, group_handle, lease_handle;
        dhcpctl_data_string cid, ip_addr;
        dhcpctl_data_string result, groupname, identifier;
+       const char *name = 0, *pass = 0, *algorithm = "hmac-md5";
        int i;
 
+       for (i = 1; i < argc; i++) {
+               if (!strcmp (argv[i], "-n")) {
+                       if (++i == argc)
+                               usage(argv[0]);
+                       name = argv[i];
+               } else if (!strcmp (argv[i], "-p")) {
+                       if (++i == argc)
+                               usage(argv[0]);
+                       pass = argv[i];
+               } else if (!strcmp (argv[i], "-a")) {
+                       if (++i == argc)
+                               usage(argv[0]);
+                       algorithm = argv[i];
+               } else {
+                       usage(argv[0]);
+               }
+       }
+
+       if ((name || pass) && !(name && pass))
+               usage(argv[0]);
+
        status = dhcpctl_initialize ();
        if (status != ISC_R_SUCCESS) {
                fprintf (stderr, "dhcpctl_initialize: %s\n",
@@ -69,9 +99,22 @@ int main (argc, argv)
                exit (1);
        }
 
+       authenticator = dhcpctl_null_handle;
+
+       if (name) {
+               status = dhcpctl_new_authenticator (&authenticator,
+                                                   name, algorithm, pass,
+                                                   strlen (pass) + 1);
+               if (status != ISC_R_SUCCESS) {
+                       fprintf (stderr, "Cannot create authenticator: %s\n",
+                                isc_result_totext (status));
+                       exit (1);
+               }
+       }
+
        memset (&connection, 0, sizeof connection);
        status = dhcpctl_connect (&connection, "127.0.0.1", 7911,
-                                 (dhcpctl_handle)0);
+                                 authenticator);
        if (status != ISC_R_SUCCESS) {
                fprintf (stderr, "dhcpctl_connect: %s\n",
                         isc_result_totext (status));