]> git.sur5r.net Git - bacula/bacula/commitdiff
Update
authorKern Sibbald <kern@sibbald.com>
Wed, 20 Jun 2007 12:56:23 +0000 (12:56 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 20 Jun 2007 12:56:23 +0000 (12:56 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@5048 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/ChangeLog
bacula/ReleaseNotes
bacula/kernstodo
bacula/src/lib/bnet_server.c
bacula/src/lib/tcpd.h [new file with mode: 0644]
bacula/src/version.h
bacula/technotes-2.1

index f1103c55e8c6e0365b9f6160d35de70c5c9d549d..fab273dbac53270456bc171d297d9ee486dca270 100644 (file)
@@ -1,6 +1,46 @@
               Technical notes on version 2.1
 
 General:
+Release: 2.1.20 beta
+20Jun07
+kes  Fixed bug #886 (multidrive autochanger: SD doesn't use drive with
+     loaded tape but uses first drive).
+kes  Fixed bug #807 Restore encrypted backup failed on Windows 2003
+     This was indeed a Win32 issue.
+19Jun07 
+kes  Simplify search of autochanger for in-use Volume.  
+kes  Fix exit condition of check for in-use volume.  kes Remove
+     inappropriate my_postgresql_free_result() in db_close()
+     routine.
+kes  Fix bad return in FD when encryption signature not found.
+     Probably caused a crash.
+kes  Inhibit missing encryption signature error messages for 
+     file types where no signature computed.
+kes  Correct inverted check on autochanger in reservation system.
+kes  Tweak debug code in autochanger reservation.
+18Jun07
+kes  Add some additional locking in the cats directory in subroutines
+     that modify packet variables called from batch insert.
+kes  Rework how dcrs are allocated. new_dcr() can now be called
+     with an existing pointer, and it will simply clean it up.
+     This allows the reservation system to test various different
+     devices, and will permit easy device changes.
+kes  A bunch of changes all over to handle new new_dcr() calling
+     sequence.
+kes  Work more on the Volume management in the SD. Remember Volumes
+     for tape drives and for autochangers (even virtual disk changers).
+kes  When looking at the Volume list to reserve a drive, handle 
+     autochanger names correctly by interating through the changer 
+     devices.  Also call the Director to see if a Volume is suitable
+     for the current job.
+kes  Fix some bugs in bscan. Make sure all media records are written.
+     Make sure that valid JobMedia records are written for disk files.
+     Previously they were completely wrong.
+kes  Move source tar files for depkgs-mingw32 to www.bacula.org so
+     that the URLs don't change and so that the developers will all
+     work off the same copy. Rebuild from scrach.
+kes  Upgrade Win32 SQLite3 from 3.3.8 to 3.3.17.
+
 Release: 2.1.18 beta
 16Jun07
 kes  Fix seg fault in FD from incorrect digest size. 
index 4ce307c4b17d31aaca7023170b19550913f339c9..dd67549332d1b88368fbe1f4844bc122f5ab50b4 100644 (file)
@@ -1,7 +1,7 @@
 
-          Release Notes for Bacula 2.1.16
+          Release Notes for Bacula 2.1.20
 
-  Bacula code: Total files = 458 Total lines = 170,197 (*.h *.c *.in)
+  Bacula code: Total files = 458 Total lines = 198,659 (*.h *.c *.in)
 
 This Director and Storage daemon must be upgraded at the same time,
 but they should be compatible with all 2.0.x File daemons, unless you
@@ -9,6 +9,12 @@ use some of the new features that affect the FD.  In other words, you should
 not have to upgrade all your File daemons.  However, bat works only with
 a 2.1.8 Director or greater.
 
+Changes since Beta release 2.1.18
+- Fixed bug #886 (multidrive autochanger: SD doesn't use drive with
+  loaded tape but uses first drive).
+- Fixed bug #807 Restore encrypted backup failed on Windows 2003
+  This was indeed a Win32 issue.
+
 Changes since Beta release 2.1.12
 - Version 2.1.14 not released.
 - Possible solution to Win32 encryption restore signature errors.
index 1ea763d0398588cbc3145833650155347302e271..068b7019bcf011075b03381f6891efc389629cfc 100644 (file)
@@ -58,6 +58,7 @@ Professional Needs:
   http://www.microsoft.com/technet/itshowcase/content/exchbkup.mspx
 
 Priority:
+- Make restore use the in-use volume reservation algorithm.
 - Look at mincore: http://insights.oetiker.ch/linux/fadvise.html
 - Unicode input http://en.wikipedia.org/wiki/Byte_Order_Mark
 - How does restore JobId=nnn work? (Dirk)
index b166d2caf19f8395483cd8741d9ea0635214f2b5..95cbc2f93ab02299f27753ed390ce6079578d3e1 100644 (file)
@@ -49,9 +49,7 @@
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
 #ifdef HAVE_LIBWRAP
-extern "C" {
-#include <tcpd.h>
-}
+#include "tcpd.h"
 int allow_severity = LOG_NOTICE;
 int deny_severity = LOG_WARNING;
 #endif
diff --git a/bacula/src/lib/tcpd.h b/bacula/src/lib/tcpd.h
new file mode 100644 (file)
index 0000000..a8a7f94
--- /dev/null
@@ -0,0 +1,227 @@
+ /*
+  * @(#) tcpd.h 1.5 96/03/19 16:22:24
+  *
+  * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
+  */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Structure to describe one communications endpoint. */
+
+#define STRING_LENGTH   128             /* hosts, users, processes */
+
+struct host_info {
+    char    name[STRING_LENGTH];        /* access via eval_hostname(host) */
+    char    addr[STRING_LENGTH];        /* access via eval_hostaddr(host) */
+    struct sockaddr_in *sin;            /* socket address or 0 */
+    struct t_unitdata *unit;            /* TLI transport address or 0 */
+    struct request_info *request;       /* for shared information */
+};
+
+/* Structure to describe what we know about a service request. */
+
+struct request_info {
+    int     fd;                         /* socket handle */
+    char    user[STRING_LENGTH];        /* access via eval_user(request) */
+    char    daemon[STRING_LENGTH];      /* access via eval_daemon(request) */
+    char    pid[10];                    /* access via eval_pid(request) */
+    struct host_info client[1];         /* client endpoint info */
+    struct host_info server[1];         /* server endpoint info */
+    void  (*sink) ();                   /* datagram sink function or 0 */
+    void  (*hostname) ();               /* address to printable hostname */
+    void  (*hostaddr) ();               /* address to printable address */
+    void  (*cleanup) ();                /* cleanup function or 0 */
+    struct netconfig *config;           /* netdir handle */
+};
+
+/* Common string operations. Less clutter should be more readable. */
+
+#define STRN_CPY(d,s,l) { strncpy((d),(s),(l)); (d)[(l)-1] = 0; }
+
+#define STRN_EQ(x,y,l)  (strncasecmp((x),(y),(l)) == 0)
+#define STRN_NE(x,y,l)  (strncasecmp((x),(y),(l)) != 0)
+#define STR_EQ(x,y)     (strcasecmp((x),(y)) == 0)
+#define STR_NE(x,y)     (strcasecmp((x),(y)) != 0)
+
+ /*
+  * Initially, all above strings have the empty value. Information that
+  * cannot be determined at runtime is set to "unknown", so that we can
+  * distinguish between `unavailable' and `not yet looked up'. A hostname
+  * that we do not believe in is set to "paranoid".
+  */
+
+#define STRING_UNKNOWN  "unknown"       /* lookup failed */
+#define STRING_PARANOID "paranoid"      /* hostname conflict */
+
+extern char unknown[];
+extern char paranoid[];
+
+#define HOSTNAME_KNOWN(s) (STR_NE((s),unknown) && STR_NE((s),paranoid))
+
+#define NOT_INADDR(s) (s[strspn(s,"01234567890./")] != 0)
+
+/* Global functions. */
+
+#if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
+extern void fromhost();                 /* get/validate client host info */
+#else
+#define fromhost sock_host              /* no TLI support needed */
+#endif
+
+extern int hosts_access(struct request_info *); /* access control */
+extern void shell_cmd();                /* execute shell command */
+extern char *percent_x();               /* do %<char> expansion */
+extern void rfc931();                   /* client name from RFC 931 daemon */
+extern void clean_exit();               /* clean up and exit */
+extern void refuse();                   /* clean up and exit */
+extern char *xgets();                   /* fgets() on steroids */
+extern char *split_at();                /* strchr() and split */
+extern unsigned long dot_quad_addr();   /* restricted inet_addr() */
+
+/* Global variables. */
+
+extern int allow_severity;              /* for connection logging */
+extern int deny_severity;               /* for connection logging */
+extern char *hosts_allow_table;         /* for verification mode redirection */
+extern char *hosts_deny_table;          /* for verification mode redirection */
+extern int hosts_access_verbose;        /* for verbose matching mode */
+extern int rfc931_timeout;              /* user lookup timeout */
+extern int resident;                    /* > 0 if resident process */
+
+ /*
+  * Routines for controlled initialization and update of request structure
+  * attributes. Each attribute has its own key.
+  */
+
+#ifdef __STDC__
+extern struct request_info *request_init(struct request_info *,...);
+extern struct request_info *request_set(struct request_info *,...);
+#else
+extern struct request_info *request_init();     /* initialize request */
+extern struct request_info *request_set();      /* update request structure */
+#endif
+
+#define RQ_FILE         1               /* file descriptor */
+#define RQ_DAEMON       2               /* server process (argv[0]) */
+#define RQ_USER         3               /* client user name */
+#define RQ_CLIENT_NAME  4               /* client host name */
+#define RQ_CLIENT_ADDR  5               /* client host address */
+#define RQ_CLIENT_SIN   6               /* client endpoint (internal) */
+#define RQ_SERVER_NAME  7               /* server host name */
+#define RQ_SERVER_ADDR  8               /* server host address */
+#define RQ_SERVER_SIN   9               /* server endpoint (internal) */
+
+ /*
+  * Routines for delayed evaluation of request attributes. Each attribute
+  * type has its own access method. The trivial ones are implemented by
+  * macros. The other ones are wrappers around the transport-specific host
+  * name, address, and client user lookup methods. The request_info and
+  * host_info structures serve as caches for the lookup results.
+  */
+
+extern char *eval_user();               /* client user */
+extern char *eval_hostname();           /* printable hostname */
+extern char *eval_hostaddr();           /* printable host address */
+extern char *eval_hostinfo();           /* host name or address */
+extern char *eval_client(struct request_info *); /* whatever is available */
+extern char *eval_server();             /* whatever is available */
+#define eval_daemon(r)  ((r)->daemon)   /* daemon process name */
+#define eval_pid(r)     ((r)->pid)      /* process id */
+
+/* Socket-specific methods, including DNS hostname lookups. */
+
+extern void sock_host(struct request_info *);
+extern void sock_hostname();            /* translate address to hostname */
+extern void sock_hostaddr();            /* address to printable address */
+#define sock_methods(r) \
+        { (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; }
+
+/* The System V Transport-Level Interface (TLI) interface. */
+
+#if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
+extern void tli_host();                 /* look up endpoint addresses etc. */
+#endif
+
+ /*
+  * Problem reporting interface. Additional file/line context is reported
+  * when available. The jump buffer (tcpd_buf) is not declared here, or
+  * everyone would have to include <setjmp.h>.
+  */
+
+#ifdef __STDC__
+extern void tcpd_warn(char *, ...);     /* report problem and proceed */
+extern void tcpd_jump(char *, ...);     /* report problem and jump */
+#else
+extern void tcpd_warn();
+extern void tcpd_jump();
+#endif
+
+struct tcpd_context {
+    char   *file;                       /* current file */
+    int     line;                       /* current line */
+};
+extern struct tcpd_context tcpd_context;
+
+ /*
+  * While processing access control rules, error conditions are handled by
+  * jumping back into the hosts_access() routine. This is cleaner than
+  * checking the return value of each and every silly little function. The
+  * (-1) returns are here because zero is already taken by longjmp().
+  */
+
+#define AC_PERMIT       1               /* permit access */
+#define AC_DENY         (-1)            /* deny_access */
+#define AC_ERROR        AC_DENY         /* XXX */
+
+ /*
+  * In verification mode an option function should just say what it would do,
+  * instead of really doing it. An option function that would not return
+  * should clear the dry_run flag to inform the caller of this unusual
+  * behavior.
+  */
+
+extern void process_options();          /* execute options */
+extern int dry_run;                     /* verification flag */
+
+/* Bug workarounds. */
+
+#ifdef INET_ADDR_BUG                    /* inet_addr() returns struct */
+#define inet_addr fix_inet_addr
+extern long fix_inet_addr();
+#endif
+
+#ifdef BROKEN_FGETS                     /* partial reads from sockets */
+#define fgets fix_fgets
+extern char *fix_fgets();
+#endif
+
+#ifdef RECVFROM_BUG                     /* no address family info */
+#define recvfrom fix_recvfrom
+extern int fix_recvfrom();
+#endif
+
+#ifdef GETPEERNAME_BUG                  /* claims success with UDP */
+#define getpeername fix_getpeername
+extern int fix_getpeername();
+#endif
+
+#ifdef SOLARIS_24_GETHOSTBYNAME_BUG     /* lists addresses as aliases */
+#define gethostbyname fix_gethostbyname
+extern struct hostent *fix_gethostbyname();
+#endif
+
+#ifdef USE_STRSEP                       /* libc calls strtok() */
+#define strtok  fix_strtok
+extern char *fix_strtok();
+#endif
+
+#ifdef LIBC_CALLS_STRTOK                /* libc calls strtok() */
+#define strtok  my_strtok
+extern char *my_strtok();
+#endif
+
+#ifdef __cplusplus
+}
+#endif
index 8a7039fc4df6d4abcb93b31dcfb1f06c0ec1a137..fc544442a1d3d32c86171b484669b206a3d8f1bc 100644 (file)
@@ -3,9 +3,9 @@
  */
 
 #undef  VERSION
-#define VERSION "2.1.19"
-#define BDATE   "19 June 2007"
-#define LSMDATE "19Jun07"
+#define VERSION "2.1.20"
+#define BDATE   "20 June 2007"
+#define LSMDATE "20Jun07"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2007"       /* year for copyright messages in progs */
index 79e6879094e16f1906468f5e61ab5595b98ef5fd..a21830100da84b41a0eee71aaf01928aca18d6b8 100644 (file)
@@ -1,10 +1,15 @@
               Technical notes on version 2.1
 
 General:
-19Jun07
-kes  Simplify search of autochanger for in-use Volume.
-kes  Fix exit condition of check for in-use volume.
-kes  Remove inappropriate my_postgresql_free_result() in db_close()
+20Jun07
+kes  Fixed bug #886 (multidrive autochanger: SD doesn't use drive with
+     loaded tape but uses first drive).
+kes  Fixed bug #807 Restore encrypted backup failed on Windows 2003
+     This was indeed a Win32 issue.
+19Jun07 
+kes  Simplify search of autochanger for in-use Volume.  
+kes  Fix exit condition of check for in-use volume.  kes Remove
+     inappropriate my_postgresql_free_result() in db_close()
      routine.
 kes  Fix bad return in FD when encryption signature not found.
      Probably caused a crash.
@@ -34,6 +39,7 @@ kes  Move source tar files for depkgs-mingw32 to www.bacula.org so
      that the URLs don't change and so that the developers will all
      work off the same copy. Rebuild from scrach.
 kes  Upgrade Win32 SQLite3 from 3.3.8 to 3.3.17.
+
 Release: 2.1.18 beta
 16Jun07
 kes  Fix seg fault in FD from incorrect digest size.