aboutsummaryrefslogtreecommitdiff
path: root/dns_sortip.c
diff options
context:
space:
mode:
Diffstat (limited to 'dns_sortip.c')
-rw-r--r--dns_sortip.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/dns_sortip.c b/dns_sortip.c
new file mode 100644
index 0000000..af9b235
--- /dev/null
+++ b/dns_sortip.c
@@ -0,0 +1,20 @@
+#include "byte.h"
+#include "dns.h"
+
+/* XXX: sort servers by configurable notion of closeness? */
+/* XXX: pay attention to competence of each server? */
+
+void dns_sortip(char *s,unsigned int n)
+{
+ unsigned int i;
+ char tmp[4];
+
+ n >>= 2;
+ while (n > 1) {
+ i = dns_random(n);
+ --n;
+ byte_copy(tmp,4,s + (i << 2));
+ byte_copy(s + (i << 2),4,s + (n << 2));
+ byte_copy(s + (n << 2),4,tmp);
+ }
+}