]> git.sur5r.net Git - bacula/bacula/blob - bacula/patches/testing/project-messagetype.patch
ebl More tests
[bacula/bacula] / bacula / patches / testing / project-messagetype.patch
1 Index: src/lib/message.c
2 ===================================================================
3 --- src/lib/message.c   (révision 6325)
4 +++ src/lib/message.c   (copie de travail)
5 @@ -590,6 +590,55 @@
6     return true;
7  }
8  
9 +static bool dispatch_it(JCR *jcr, int type, DEST *d)
10 +{
11 +   bool ret=true;
12 +
13 +   if (!bit_is_set(type, d->msg_types)) {
14 +      return false;
15 +   }
16 +
17 +   /* check if M_FILTER are set */
18 +   int max=0;
19 +   set_bit(M_MAX, max);
20 +
21 +   if (d->msg_types <= max) {
22 +      return true;
23 +   }
24 +
25 +   /* check this if msg_types contains a level */
26 +   switch (jcr->JobLevel) {
27 +   case L_FULL:
28 +      ret = bit_is_set(M_FILTER_FULL, d->msg_types);
29 +      break;
30 +
31 +   case L_DIFFERENTIAL:
32 +      ret = bit_is_set(M_FILTER_DIFFERENTIAL, d->msg_types);
33 +      break;
34 +
35 +   case L_INCREMENTAL:
36 +      ret = bit_is_set(M_FILTER_INCREMENTAL, d->msg_types);
37 +      break;
38 +   }
39 +
40 +   /* check this if msg_types contains a jobtype */
41 +   switch (jcr->JobType) {
42 +   case JT_BACKUP:
43 +      ret = bit_is_set(M_FILTER_BACKUP, d->msg_types);
44 +      break;
45 +   case JT_VERIFY:
46 +      ret = bit_is_set(M_FILTER_VERIFY, d->msg_types);
47 +      break;
48 +   case JT_RESTORE:
49 +      ret = bit_is_set(M_FILTER_RESTORE, d->msg_types);
50 +      break;
51 +   case JT_MIGRATED_JOB:
52 +      ret = bit_is_set(M_FILTER_MIGRATION, d->msg_types);
53 +      break;
54 +   }
55 +
56 +}
57 +
58  /*
59   * Handle sending the message to the appropriate place
60   */
61 @@ -649,7 +698,8 @@
62         msgs = daemon_msgs;
63      }
64      for (d=msgs->dest_chain; d; d=d->next) {
65 -       if (bit_is_set(type, d->msg_types)) {
66 +       /* check for filter her */
67 +       if (dispatch_it(jcr, type, d)) {
68            switch (d->dest_code) {
69               case MD_CATALOG:
70                  char ed1[50];
71 Index: src/lib/message.h
72 ===================================================================
73 --- src/lib/message.h   (révision 6325)
74 +++ src/lib/message.h   (copie de travail)
75 @@ -97,15 +97,27 @@
76     M_RESTORED,                        /* ls -l of restored files */
77     M_SECURITY,                        /* security violation */
78     M_ALERT,                           /* tape alert messages */
79 -   M_VOLMGMT                          /* Volume management messages */
80 -};
81 +   M_VOLMGMT,                         /* Volume management messages */
82  
83 +   /* following options are used as filter */
84 +   M_FILTER_VERIFY,                   /* verify job */
85 +   M_FILTER_ADMIN,                   /* admin job */
86 +   M_FILTER_RESTORE,                 /* restore job */
87 +   M_FILTER_MIGRATION,                /* migration job */
88 +   M_FILTER_BACKUP,                   /* backup job */
89 +   M_FILTER_INCREMENTAL,             /* incremental backup job */
90 +   M_FILTER_DIFFERENTIAL,            /* differential backup job */
91 +   M_FILTER_FULL,                    /* full backup job */
92 +   M_FILTER_ALL                              /* all */
93 +};          
94 +
95  #define M_MAX      M_VOLMGMT          /* keep this updated ! */
96  
97  /* Define message destination structure */
98  /* *** FIXME **** where should be extended to handle multiple values */
99  typedef struct s_dest {
100     struct s_dest *next;
101 +   int  filter;                       /* message filter (M_FILTER_) */
102     int dest_code;                     /* destination (one of the MD_ codes) */
103     int max_len;                       /* max mail line length */
104     FILE *fd;                          /* file descriptor */
105 Index: src/lib/parse_conf.c
106 ===================================================================
107 --- src/lib/parse_conf.c        (révision 6325)
108 +++ src/lib/parse_conf.c        (copie de travail)
109 @@ -152,6 +152,16 @@
110     {"all",           M_MAX+1},
111     {NULL,            0}
112  };
113 +/* following types are used as message filter */
114 +static struct s_mfilters msg_filters[] = {
115 +   {"admin",         M_FILTER_ADMIN},
116 +   {"verify"         M_FILTER_VERIFY},
117 +   {"restore",       M_FILTER_RESTORE},
118 +   {"full",          M_FILTER_FULL},
119 +   {"incremental",   M_FILTER_INCREMENTAL},
120 +   {"differential",  M_FILTER_DIFFERENTIAL},
121 +   {NULL,            0}
122 +};
123  
124  /* Used for certain KeyWord tables */
125  struct s_kw {
126 @@ -331,6 +341,7 @@
127     int i; 
128     bool found, is_not;
129     int msg_type = 0;
130 +   int msg_filter = 0;
131     char *str;
132  
133     for ( ;; ) {