aboutsummaryrefslogtreecommitdiff
path: root/src/core/or/versions.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-09-30 18:27:23 -0500
committerNick Mathewson <nickm@torproject.org>2018-10-01 00:04:58 -0500
commit2f5dc486993b88eb23de7f06043991f08e4d0d73 (patch)
treed56ea5c1cd515f0ce635812f6ec6974d8b337d4a /src/core/or/versions.h
parentfec3b3bb9389d9d9f927c370d560fc50ec65c93b (diff)
downloadtor-2f5dc486993b88eb23de7f06043991f08e4d0d73.tar.gz
tor-2f5dc486993b88eb23de7f06043991f08e4d0d73.zip
Extract the version-managing code from routerparse.c
Leave the versions.h include in routerparse.h for now; I'll remove it later.
Diffstat (limited to 'src/core/or/versions.h')
-rw-r--r--src/core/or/versions.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/core/or/versions.h b/src/core/or/versions.h
new file mode 100644
index 0000000000..a2353bcae3
--- /dev/null
+++ b/src/core/or/versions.h
@@ -0,0 +1,40 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file versions.h
+ * \brief Header file for versions.c.
+ **/
+
+#ifndef TOR_VERSIONS_H
+#define TOR_VERSIONS_H
+
+/** Possible statuses of a version of Tor, given opinions from the directory
+ * servers. */
+typedef enum version_status_t {
+ VS_RECOMMENDED=0, /**< This version is listed as recommended. */
+ VS_OLD=1, /**< This version is older than any recommended version. */
+ VS_NEW=2, /**< This version is newer than any recommended version. */
+ VS_NEW_IN_SERIES=3, /**< This version is newer than any recommended version
+ * in its series, but later recommended versions exist.
+ */
+ VS_UNRECOMMENDED=4, /**< This version is not recommended (general case). */
+ VS_EMPTY=5, /**< The version list was empty; no agreed-on versions. */
+ VS_UNKNOWN, /**< We have no idea. */
+} version_status_t;
+
+version_status_t tor_version_is_obsolete(const char *myversion,
+ const char *versionlist);
+int tor_version_parse_platform(const char *platform,
+ tor_version_t *version_out,
+ int strict);
+int tor_version_as_new_as(const char *platform, const char *cutoff);
+int tor_version_parse(const char *s, tor_version_t *out);
+int tor_version_compare(tor_version_t *a, tor_version_t *b);
+int tor_version_same_series(tor_version_t *a, tor_version_t *b);
+void sort_version_list(smartlist_t *lst, int remove_duplicates);
+
+#endif /* !defined(TOR_VERSIONS_H) */