From 9161bbf010ed25f40e3ba7952efea18409f6a752 Mon Sep 17 00:00:00 2001 From: Thomas Heil Date: Mon, 15 Apr 2013 14:38:07 +0000 Subject: [PATCH] package: haproxy - update to 1.4.23 - (CVE-2013-1912) - fixup for consistent hash - refresh accept-proxy patch SVN-Revision: 36337 --- net/haproxy/Makefile | 8 +- ...d-consistent-hash-can-loop-forever-i.patch | 57 +++++ ...-use-a-copy-of-the-file-name-i-1.4.22.diff | 75 ------ ...correctly-disable-FD-polling-i-1.4.22.diff | 53 ---- ...rt-URLs-by-avg-bytes_read-or-t-1.4.22.diff | 191 --------------- ...log-sort-output-by-cookie-code-1.4.22.diff | 118 --------- ...ad-ac-report-the-correct-numbe-1.4.22.diff | 29 --- ...og-fix-help-message-for-ut-uto-1.4.22.diff | 27 -- ...set-DONTWAIT-on-data-when-swit-1.4.22.diff | 75 ------ ...nd-line-option-D-must-have-pre-1.4.22.diff | 42 ---- ...data-when-http-send-name-heade-1.4.22.diff | 49 ---- .../patches/001-haproxy-1.4.x-sendproxy.patch | 18 +- ...-a-fast-path-for-the-lines-cou-1.4.22.diff | 54 ---- ...a-parameter-to-limit-output-li-1.4.22.diff | 134 ---------- ...g-fix-broken-output-limitation-1.4.22.diff | 110 --------- ...oid-accumulating-TIME_WAITs-du-1.4.22.diff | 91 ------- ...event-TIME_WAITs-from-appearin-1.4.22.diff | 29 --- ...ow-sess-id-may-randomly-corrup-1.4.22.diff | 55 ----- ...on-t-report-client-aborts-as-s-1.4.22.diff | 86 ------- ...on-t-log-a-503-on-client-error-1.4.22.diff | 31 --- ...rocess-could-theorically-crash-1.4.22.diff | 58 ----- ...on-t-abort-client-connection-o-1.4.22.diff | 45 ---- ...o-clean-up-when-making-git-tar-1.4.22.diff | 28 --- ...s-report-PR-flags-for-redirect-1.4.22.diff | 30 --- ...requency-counters-are-not-tota-1.4.22.diff | 124 ---------- ...on-t-process-abortonclose-when-1.4.22.diff | 28 --- ...e-supplementary-groups-when-ch-1.4.22.diff | 81 ------ ...use-a-fix-maxevents-argument-i-1.4.22.diff | 50 ---- ...-fix-improper-check-for-failed-1.4.22.diff | 32 --- ...s-ensure-the-health_status-is--1.4.22.diff | 35 --- ...tp-remove-a-useless-null-check-1.4.22.diff | 33 --- ...l-signal-handler-does-not-prop-1.4.22.diff | 43 ---- ...uth-missing-NULL-check-and-mem-1.4.22.diff | 48 ---- ...ig-slowstart-is-never-negative-1.4.22.diff | 34 --- ...INOR-Correct-logic-in-cut_crlf-1.4.22.diff | 44 ---- ...e-makefile-s-support-for-libpc-1.4.22.diff | 88 ------- ...-fix-an-warning-introduced-by--1.4.22.diff | 30 --- ...-support-for-counting-per-sour-1.4.22.diff | 231 ------------------ ...-http-implement-redirect-307-and-308.patch | 71 ------ ...s-301-should-not-be-marked-non-cache.patch | 28 --- ...new-HTTP-307-and-308-redirect-statue.patch | 47 ---- ...M-poll-do-not-use-FD_-macros-anymore.patch | 193 --------------- ...ect-disable-the-select-poller-if-max.patch | 77 ------ ...able-poll-by-default-in-the-makefile.patch | 60 ----- ...LD-add-explicit-support-for-Mac-OS-X.patch | 57 ----- .../patches/0043-fix-cve-2013-1912.patch | 102 -------- 46 files changed, 70 insertions(+), 2959 deletions(-) create mode 100644 net/haproxy/patches/0001-BUG-MAJOR-backend-consistent-hash-can-loop-forever-i.patch delete mode 100644 net/haproxy/patches/0001-BUG-MINOR-config-use-a-copy-of-the-file-name-i-1.4.22.diff delete mode 100644 net/haproxy/patches/0002-BUG-MINOR-epoll-correctly-disable-FD-polling-i-1.4.22.diff delete mode 100644 net/haproxy/patches/0003-CONTRIB-halog-sort-URLs-by-avg-bytes_read-or-t-1.4.22.diff delete mode 100644 net/haproxy/patches/0004-MINOR-halog-sort-output-by-cookie-code-1.4.22.diff delete mode 100644 net/haproxy/patches/0005-BUG-MINOR-halog-ad-ac-report-the-correct-numbe-1.4.22.diff delete mode 100644 net/haproxy/patches/0006-BUG-MINOR-halog-fix-help-message-for-ut-uto-1.4.22.diff delete mode 100644 net/haproxy/patches/0007-BUG-MEDIUM-http-set-DONTWAIT-on-data-when-swit-1.4.22.diff delete mode 100644 net/haproxy/patches/0008-BUG-MEDIUM-command-line-option-D-must-have-pre-1.4.22.diff delete mode 100644 net/haproxy/patches/0009-BUG-fix-garbage-data-when-http-send-name-heade-1.4.22.diff delete mode 100644 net/haproxy/patches/0010-OPTIM-halog-keep-a-fast-path-for-the-lines-cou-1.4.22.diff delete mode 100644 net/haproxy/patches/0011-MINOR-halog-add-a-parameter-to-limit-output-li-1.4.22.diff delete mode 100644 net/haproxy/patches/0012-BUG-halog-fix-broken-output-limitation-1.4.22.diff delete mode 100644 net/haproxy/patches/0013-MEDIUM-checks-avoid-accumulating-TIME_WAITs-du-1.4.22.diff delete mode 100644 net/haproxy/patches/0014-MEDIUM-checks-prevent-TIME_WAITs-from-appearin-1.4.22.diff delete mode 100644 net/haproxy/patches/0015-BUG-MAJOR-cli-show-sess-id-may-randomly-corrup-1.4.22.diff delete mode 100644 net/haproxy/patches/0016-BUG-MINOR-http-don-t-report-client-aborts-as-s-1.4.22.diff delete mode 100644 net/haproxy/patches/0017-BUG-MINOR-http-don-t-log-a-503-on-client-error-1.4.22.diff delete mode 100644 net/haproxy/patches/0018-BUG-MEDIUM-tcp-process-could-theorically-crash-1.4.22.diff delete mode 100644 net/haproxy/patches/0019-BUG-MINOR-http-don-t-abort-client-connection-o-1.4.22.diff delete mode 100644 net/haproxy/patches/0020-BUILD-no-need-to-clean-up-when-making-git-tar-1.4.22.diff delete mode 100644 net/haproxy/patches/0021-MINOR-http-always-report-PR-flags-for-redirect-1.4.22.diff delete mode 100644 net/haproxy/patches/0022-BUG-MINOR-time-frequency-counters-are-not-tota-1.4.22.diff delete mode 100644 net/haproxy/patches/0023-BUG-MINOR-http-don-t-process-abortonclose-when-1.4.22.diff delete mode 100644 net/haproxy/patches/0024-BUG-MEDIUM-remove-supplementary-groups-when-ch-1.4.22.diff delete mode 100644 net/haproxy/patches/0025-BUG-MINOR-epoll-use-a-fix-maxevents-argument-i-1.4.22.diff delete mode 100644 net/haproxy/patches/0026-BUG-MINOR-config-fix-improper-check-for-failed-1.4.22.diff delete mode 100644 net/haproxy/patches/0027-BUG-MEDIUM-checks-ensure-the-health_status-is--1.4.22.diff delete mode 100644 net/haproxy/patches/0028-CLEANUP-http-remove-a-useless-null-check-1.4.22.diff delete mode 100644 net/haproxy/patches/0029-BUG-MEDIUM-signal-signal-handler-does-not-prop-1.4.22.diff delete mode 100644 net/haproxy/patches/0030-BUG-MEDIUM-uri_auth-missing-NULL-check-and-mem-1.4.22.diff delete mode 100644 net/haproxy/patches/0031-CLEANUP-config-slowstart-is-never-negative-1.4.22.diff delete mode 100644 net/haproxy/patches/0032-BUG-MINOR-Correct-logic-in-cut_crlf-1.4.22.diff delete mode 100644 net/haproxy/patches/0033-BUILD-improve-the-makefile-s-support-for-libpc-1.4.22.diff delete mode 100644 net/haproxy/patches/0034-BUG-MINOR-checks-fix-an-warning-introduced-by--1.4.22.diff delete mode 100644 net/haproxy/patches/0035-MEDIUM-halog-add-support-for-counting-per-sour-1.4.22.diff delete mode 100644 net/haproxy/patches/0036-MEDIUM-http-implement-redirect-307-and-308.patch delete mode 100644 net/haproxy/patches/0037-MINOR-http-status-301-should-not-be-marked-non-cache.patch delete mode 100644 net/haproxy/patches/0038-DOC-mention-the-new-HTTP-307-and-308-redirect-statue.patch delete mode 100644 net/haproxy/patches/0039-MEDIUM-poll-do-not-use-FD_-macros-anymore.patch delete mode 100644 net/haproxy/patches/0040-BUG-MAJOR-ev_select-disable-the-select-poller-if-max.patch delete mode 100644 net/haproxy/patches/0041-BUILD-enable-poll-by-default-in-the-makefile.patch delete mode 100644 net/haproxy/patches/0042-BUILD-add-explicit-support-for-Mac-OS-X.patch delete mode 100644 net/haproxy/patches/0043-fix-cve-2013-1912.patch diff --git a/net/haproxy/Makefile b/net/haproxy/Makefile index 2ffb236db4..87d4578967 100644 --- a/net/haproxy/Makefile +++ b/net/haproxy/Makefile @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=haproxy -PKG_VERSION:=1.4.22 -PKG_RELEASE:=43 +PKG_VERSION:=1.4.23 +PKG_RELEASE:=03 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://haproxy.1wt.eu/download/1.4/src -PKG_MD5SUM:=a0b007c76f6a78524f3b3dd5e704979c +PKG_MD5SUM:=6535d5e58037ada4b58b439cebe03c79 include $(INCLUDE_DIR)/package.mk @@ -37,7 +37,7 @@ define Package/haproxy/description endef define Build/Compile - $(MAKE) TARGET=linux28 -C $(PKG_BUILD_DIR) \ + $(MAKE) TARGET=linux2628 -C $(PKG_BUILD_DIR) \ DESTDIR="$(PKG_INSTALL_DIR)" \ CC="$(TARGET_CC)" \ CFLAGS="$(TARGET_CFLAGS)" \ diff --git a/net/haproxy/patches/0001-BUG-MAJOR-backend-consistent-hash-can-loop-forever-i.patch b/net/haproxy/patches/0001-BUG-MAJOR-backend-consistent-hash-can-loop-forever-i.patch new file mode 100644 index 0000000000..da8df396e1 --- /dev/null +++ b/net/haproxy/patches/0001-BUG-MAJOR-backend-consistent-hash-can-loop-forever-i.patch @@ -0,0 +1,57 @@ +From d16a1b2a818359e8c3ade85f789e66ed7ca9488c Mon Sep 17 00:00:00 2001 +From: Willy Tarreau +Date: Fri, 12 Apr 2013 14:46:51 +0200 +Subject: BUG/MAJOR: backend: consistent hash can loop forever in certain + circumstances + +When the parameter passed to a consistent hash is not found, we fall back to +round-robin using chash_get_next_server(). This one stores the last visited +server in lbprm.chash.last, which can be NULL upon the first invocation or if +the only server was recently brought up. + +The loop used to scan for a server is able to skip the previously attempted +server in case of a redispatch, by passing this previous server in srvtoavoid. +For this reason, the loop stops when the currently considered server is +different from srvtoavoid and different from the original chash.last. + +A problem happens in a special sequence : if a connection to a server fails, +then all servers are removed from the farm, then the original server is added +again before the redispatch happens, we have chash.last = NULL and srvtoavoid +set to the only server in the farm. Then this server is always equal to +srvtoavoid and never to NULL, and the loop never stops. + +The fix consists in assigning the stop point to the first encountered node if +it was not yet set. + +This issue cannot happen with the map-based algorithm since it's based on an +index and not a stop point. + +This issue was reported by Henry Qian who kindly provided lots of critically +useful information to figure out the conditions to reproduce the issue. + +The fix needs to be backported to 1.4 which is also affected. +--- + src/lb_chash.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/lb_chash.c b/src/lb_chash.c +index 58f1c9e..d65de74 100644 +--- a/src/lb_chash.c ++++ b/src/lb_chash.c +@@ -332,6 +332,13 @@ struct server *chash_get_next_server(struct proxy *p, struct server *srvtoavoid) + /* no node is available */ + return NULL; + ++ /* Note: if we came here after a down/up cycle with no last ++ * pointer, and after a redispatch (srvtoavoid is set), we ++ * must set stop to non-null otherwise we can loop forever. ++ */ ++ if (!stop) ++ stop = node; ++ + /* OK, we have a server. However, it may be saturated, in which + * case we don't want to reconsider it for now, so we'll simply + * skip it. Same if it's the server we try to avoid, in which +-- +1.7.12.4.dirty + diff --git a/net/haproxy/patches/0001-BUG-MINOR-config-use-a-copy-of-the-file-name-i-1.4.22.diff b/net/haproxy/patches/0001-BUG-MINOR-config-use-a-copy-of-the-file-name-i-1.4.22.diff deleted file mode 100644 index d77d4cef1c..0000000000 --- a/net/haproxy/patches/0001-BUG-MINOR-config-use-a-copy-of-the-file-name-i-1.4.22.diff +++ /dev/null @@ -1,75 +0,0 @@ -From 60f05a8eae1afda44d62066445a0c072659a1aa1 Mon Sep 17 00:00:00 2001 -From: Willy Tarreau -Date: Thu, 4 Oct 2012 08:01:43 +0200 -Subject: BUG/MINOR: config: use a copy of the file name in proxy configurations - -Each proxy contains a reference to the original config file and line -number where it was declared. The pointer used is just a reference to -the one passed to the function instead of being duplicated. The effect -is that it is not valid anymore at the end of the parsing and that all -proxies will be enumerated as coming from the same file on some late -configuration errors. This may happen for exmaple when reporting SSL -certificate issues. - -By copying using strdup(), we avoid this issue. - -1.4 has the same issue, though no report of the proxy file name is done -out of the config section. Anyway a backport is recommended to ease -post-mortem analysis. -(cherry picked from commit 8113a5d78f2d2abe942f88a3a4df9f8bb5e535ba) ---- - include/types/proxy.h | 2 +- - src/cfgparse.c | 4 ++-- - src/haproxy.c | 1 + - 3 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/include/types/proxy.h b/include/types/proxy.h -index 1773658..a06078a 100644 ---- a/include/types/proxy.h -+++ b/include/types/proxy.h -@@ -320,7 +320,7 @@ struct proxy { - int no_options2; /* PR_O2_* */ - - struct { -- const char *file; /* file where the section appears */ -+ char *file; /* file where the section appears */ - int line; /* line where the section appears */ - struct eb32_node id; /* place in the tree of used IDs */ - struct eb_root used_listener_id;/* list of listener IDs in use */ -diff --git a/src/cfgparse.c b/src/cfgparse.c -index 643f065..90fdbff 100644 ---- a/src/cfgparse.c -+++ b/src/cfgparse.c -@@ -1136,7 +1136,7 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm) - init_new_proxy(curproxy); - curproxy->next = proxy; - proxy = curproxy; -- curproxy->conf.file = file; -+ curproxy->conf.file = strdup(file); - curproxy->conf.line = linenum; - curproxy->last_change = now.tv_sec; - curproxy->id = strdup(args[1]); -@@ -3425,7 +3425,7 @@ stats_error_parsing: - newsrv->next = curproxy->srv; - curproxy->srv = newsrv; - newsrv->proxy = curproxy; -- newsrv->conf.file = file; -+ newsrv->conf.file = strdup(file); - newsrv->conf.line = linenum; - - LIST_INIT(&newsrv->pendconns); -diff --git a/src/haproxy.c b/src/haproxy.c -index 6141a5b..2944462 100644 ---- a/src/haproxy.c -+++ b/src/haproxy.c -@@ -732,6 +732,7 @@ void deinit(void) - int i; - - while (p) { -+ free(p->conf.file); - free(p->id); - free(p->check_req); - free(p->cookie_name); --- -1.7.1 - diff --git a/net/haproxy/patches/0002-BUG-MINOR-epoll-correctly-disable-FD-polling-i-1.4.22.diff b/net/haproxy/patches/0002-BUG-MINOR-epoll-correctly-disable-FD-polling-i-1.4.22.diff deleted file mode 100644 index e02cf4731c..0000000000 --- a/net/haproxy/patches/0002-BUG-MINOR-epoll-correctly-disable-FD-polling-i-1.4.22.diff +++ /dev/null @@ -1,53 +0,0 @@ -From 72ce4c8f4e0531c50b3a0914d77858440d16d914 Mon Sep 17 00:00:00 2001 -From: Willy Tarreau -Date: Thu, 4 Oct 2012 21:54:41 +0200 -Subject: BUG/MINOR: epoll: correctly disable FD polling in fd_rem() - -When calling fd_rem(), the polling was not correctly disabled because the -->prev state was set to zero instead of the previous value. fd_rem() is -very rarely used, only just before closing a socket. - -The effect is that upon an error reported at the connection level, if the -task assigned to the connection was too slow to be woken up because of too -many other tasks in the run queue, the FD was still not disabled and caused -the connection handler to be called again with the same event until the task -was finally executed to close the fd. - -This issue only affects the epoll poller, not the sepoll variant nor any of -the other ones. - -It was already present in 1.4 and even 1.3 with the same almost unnoticeable -effects. The bug can in fact only be discovered during development where it -emphasizes other bugs. - -It should be backported anyway. -(cherry picked from commit f8cfa447c676849e1d1b007353d4ea2f7231e4a0) ---- - src/ev_epoll.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/ev_epoll.c b/src/ev_epoll.c -index b976868..0b22da6 100644 ---- a/src/ev_epoll.c -+++ b/src/ev_epoll.c -@@ -194,11 +194,15 @@ REGPRM2 static int __fd_clr(const int fd, int dir) - REGPRM1 static void __fd_rem(int fd) - { - uint32_t ofs = FD2OFS(fd); -+ uint32_t old_evt; - -- if (unlikely(!((fd_evts[ofs] >> FD2BIT(fd)) & 3))) -+ old_evt = fd_evts[ofs] >> FD2BIT(fd); -+ old_evt &= 3; -+ -+ if (unlikely(!old_evt)) - return; - -- alloc_chg_list(fd, 0); -+ alloc_chg_list(fd, old_evt); - fd_evts[ofs] &= ~FD2MSK(fd); - return; - } --- -1.7.1 - diff --git a/net/haproxy/patches/0003-CONTRIB-halog-sort-URLs-by-avg-bytes_read-or-t-1.4.22.diff b/net/haproxy/patches/0003-CONTRIB-halog-sort-URLs-by-avg-bytes_read-or-t-1.4.22.diff deleted file mode 100644 index fa63d87ec1..0000000000 --- a/net/haproxy/patches/0003-CONTRIB-halog-sort-URLs-by-avg-bytes_read-or-t-1.4.22.diff +++ /dev/null @@ -1,191 +0,0 @@ -From 69eeb17615cd032ec7b3a9496ddb811095e92cb4 Mon Sep 17 00:00:00 2001 -From: Baptiste -Date: Sat, 8 Sep 2012 23:10:03 +0200 -Subject: CONTRIB: halog: sort URLs by avg bytes_read or total bytes_read - -The patch attached to this mail brings ability to sort URLs by -averaged bytes read and total bytes read in HALog tool. -In most cases, bytes read is also the object size. -The purpose of this patch is to know which URL consume the most -bandwith, in average or in total. -It may be interesting as well to know the standard deviation (ecart -type in french) for some counters (like bytes_read). - -The results: -- Sorting by average bytes read per URL: -./halog -uba <~/tmp/haproxy.log | column -t | head -2246 lines in, 302 lines out, 194 parsing errors -18 0 5101 283 5101 283 126573 2278327 /lib/exe/js.php -1 0 1 1 1 1 106734 106734 /wp-admin/images/screenshots/theme-customizer.png -2 0 2 1 2 1 106511 213022 /wp-admin/css/wp-admin.css -1 0 1 1 1 1 96698 96698 /wp-admin/images/screenshots/captions-1.png -1 0 1 1 1 1 73165 73165 /wp-admin/images/screenshots/flex-header-1.png -4 0 0 0 0 0 64832 259328 /cuisine/wp-content/plugins/stats/open-flash-chart.swf -1 0 0 0 0 0 48647 48647 /wp-admin/images/screenshots/flex-header-3.png -1 0 0 0 0 0 44046 44046 /wp-admin/images/screenshots/captions-2.png -1 0 1 1 1 1 38830 38830 /wp-admin/images/screenshots/flex-header-2.png - -- Sorting by total bytes read per URL: -./halog -ubt <~/tmp/haproxy.log | column -t | head -2246 lines in, 302 lines out, 194 parsing errors -18 0 5101 283 5101 283 126573 2278327 /lib/exe/js.php -60 0 14387 239 14387 239 10081 604865 /lib/exe/css.php -64 2 8820 137 8819 142 7742 495524 /doku.php -14 0 250 17 250 17 24045 336632 /wp-admin/load-scripts.php -71 0 6422 90 6422 90 4048 287419 /wp-admin/ -4 0 0 0 0 0 64832 259328 /cuisine/wp-content/plugins/stats/open-flash-chart.swf -2 0 2 1 2 1 106511 213022 /wp-admin/css/wp-admin.css -31 3 5423 174 5040 180 6804 210931 /index -10 0 429 42 429 42 18009 180093 /cuisine/files/2011/10/tarte_figue_amande-e1318281546905-225x300.jpg -(cherry picked from commit 61aaad06e85ae7f46cf5589bce8bc7f9331e7962) ---- - contrib/halog/halog.c | 39 ++++++++++++++++++++++++++++++++------- - 1 files changed, 32 insertions(+), 7 deletions(-) - -diff --git a/contrib/halog/halog.c b/contrib/halog/halog.c -index f19be0b..274b7f3 100644 ---- a/contrib/halog/halog.c -+++ b/contrib/halog/halog.c -@@ -29,6 +29,7 @@ - #define SERVER_FIELD 8 - #define TIME_FIELD 9 - #define STATUS_FIELD 10 -+#define BYTES_SENT_FIELD 11 - #define TERM_CODES_FIELD 14 - #define CONN_FIELD 15 - #define QUEUE_LEN_FIELD 16 -@@ -67,6 +68,7 @@ struct url_stat { - char *url; - unsigned long long total_time; /* sum(all reqs' times) */ - unsigned long long total_time_ok; /* sum(all OK reqs' times) */ -+ unsigned long long total_bytes_sent; /* sum(all bytes sent) */ - unsigned int nb_err, nb_req; - }; - -@@ -94,8 +96,6 @@ struct url_stat { - #define FILT_COUNT_URL_TAVG 0x040000 - #define FILT_COUNT_URL_TTOTO 0x080000 - #define FILT_COUNT_URL_TAVGO 0x100000 --#define FILT_COUNT_URL_ANY (FILT_COUNT_URL_ONLY|FILT_COUNT_URL_COUNT|FILT_COUNT_URL_ERR| \ -- FILT_COUNT_URL_TTOT|FILT_COUNT_URL_TAVG|FILT_COUNT_URL_TTOTO|FILT_COUNT_URL_TAVGO) - - #define FILT_HTTP_ONLY 0x200000 - #define FILT_TERM_CODE_NAME 0x400000 -@@ -106,6 +106,13 @@ struct url_stat { - #define FILT_QUEUE_ONLY 0x4000000 - #define FILT_QUEUE_SRV_ONLY 0x8000000 - -+#define FILT_COUNT_URL_BAVG 0x10000000 -+#define FILT_COUNT_URL_BTOT 0x20000000 -+ -+#define FILT_COUNT_URL_ANY (FILT_COUNT_URL_ONLY|FILT_COUNT_URL_COUNT|FILT_COUNT_URL_ERR| \ -+ FILT_COUNT_URL_TTOT|FILT_COUNT_URL_TAVG|FILT_COUNT_URL_TTOTO|FILT_COUNT_URL_TAVGO| \ -+ FILT_COUNT_URL_BAVG|FILT_COUNT_URL_BTOT) -+ - unsigned int filter = 0; - unsigned int filter_invert = 0; - const char *line; -@@ -128,9 +135,10 @@ void usage(FILE *output, const char *msg) - fprintf(output, - "%s" - "Usage: halog [-h|--help] for long help\n" -- " halog [-q] [-c] [-v] {-gt|-pct|-st|-tc|-srv|-u|-uc|-ue|-ua|-ut|-uao|-uto}\n" -+ " halog [-q] [-c]\n" -+ " {-gt|-pct|-st|-tc|-srv|-u|-uc|-ue|-ua|-ut|-uao|-uto|-uba|-ubt}\n" - " [-s ] [-e|-E] [-H] [-rt|-RT