PERFORCE change 125407 for review

Alexey Mikhailov karma at FreeBSD.org
Mon Aug 20 06:38:48 PDT 2007


http://perforce.freebsd.org/chv.cgi?CH=125407

Change 125407 by karma at karma_ez on 2007/08/20 13:38:46

	- Add missing routines for configuration parsing
	- Fix last commit

Affected files ...

.. //depot/projects/soc2007/karma_audit/dlog/daemon/client.c#7 edit
.. //depot/projects/soc2007/karma_audit/dlog/daemon/config.c#7 edit
.. //depot/projects/soc2007/karma_audit/dlog/daemon/config.h#7 edit
.. //depot/projects/soc2007/karma_audit/dlog/lib/libdlogd.c#5 edit
.. //depot/projects/soc2007/karma_audit/dlog/lib/libdlogd.h#4 edit

Differences ...

==== //depot/projects/soc2007/karma_audit/dlog/daemon/client.c#7 (text+ko) ====

@@ -103,11 +103,12 @@
                                 snprintf(jobbuf, PATH_MAX, "%s/.%ld.%s.hds", pathbuf,ts,basename(pathname));
                                 fd = open(jobbuf, O_CREAT | O_TRUNC, S_IRUSR | S_IRGRP);
                                 hl = client_get_hosts(keyword);
-                                while (hl == NULL) {
+                                while (hl != NULL) {
                                         bzero(&j, sizeof(j));
                                         memcpy(&(j.sa), &(hl->hs->s), sizeof(struct sockaddr));
                                         j.done = 0;
                                         write(fd, &j, sizeof(j));
+                                        hl = hl -> next;
                                 }
                                 close(fd);
                                 /* we re done */
@@ -123,8 +124,10 @@
                         return ;
                 }
         } else {
-                /* TODO: can't check permissions. wrong query */
-                fprintf(stderr,"client: can't check permissions");
+                /* Can't check permission */
+                ans = 1;
+                write(cs, &ans, sizeof(ans));
+                return ;
         }
 }
 

==== //depot/projects/soc2007/karma_audit/dlog/daemon/config.c#7 (text+ko) ====

@@ -402,5 +402,40 @@
 char *
 verify_server_access (struct sockaddr * sa, const char * keyword)
 {
-        return 0;
+        sv_kw_data * sk;
+        sv_kw_hostdir * hs;
+        host_ll * h;
+
+        sk = (sv_kw_data *) search_tree (server_kw_tree, keyword);
+
+        if (sk == NULL) {
+                return NULL; /* bad keyword */
+        }
+        
+        hs = sk -> hds;
+
+        while (hs != NULL) {
+                h = hs -> hs;
+                while (h != NULL) {
+                        if (strcmp(h -> s.sa_data, sa -> sa_data) == 0) {
+                                return (hs -> dir);
+                        }
+                }
+        }
+
+        return NULL;
+}
+
+cl_kw_hosts *
+client_get_hosts (const char * keyword)
+{
+        cl_kw_data * ck;
+
+        ck = (cl_kw_data *) search_tree(client_kw_tree, keyword);
+
+        if (ck == NULL) {
+                return NULL; /* bad keyword */
+        }
+
+        return ck -> hosts;
 }

==== //depot/projects/soc2007/karma_audit/dlog/daemon/config.h#7 (text+ko) ====


==== //depot/projects/soc2007/karma_audit/dlog/lib/libdlogd.c#5 (text+ko) ====

@@ -14,8 +14,29 @@
 #include <sys/un.h>
 #include <sys/ucred.h>
 
+static const char *dlog_errlist[] = {
+        "Success",                          
+        "Can't create socket", 
+        "Can't bind() on socket",
+        "Can't chmod() on socket",
+        "Can't connect() on socket",
+        "Can't sendmsg() on socket",
+        "Can't read() from socket",
+        "Bad response from server"
+};
+
+
 static int dlogd_connect ();
 
+const char *
+dlog_strerror (int code)
+{
+        if (code >= 0 && code <= 7) {
+                return dlog_errlist[-code];
+        }
+        return "Unknown error";
+}
+
 /* Submit log file 
 
    On success: 0 returned

==== //depot/projects/soc2007/karma_audit/dlog/lib/libdlogd.h#4 (text+ko) ====

@@ -2,5 +2,6 @@
 #define DLOG_LIB_H
 
 int dlogd_submit(const char * pathname, const char * keyword);
+const char * dlog_strerror(int code);
 
 #endif


More information about the p4-projects mailing list