ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/src/util.h
(Generate patch)

Comparing gvpe/src/util.h (file contents):
Revision 1.25 by pcg, Thu Aug 7 17:54:27 2008 UTC vs.
Revision 1.29 by root, Tue Mar 8 17:33:31 2011 UTC

1/* 1/*
2 util.h -- process management and other utility functions 2 util.h -- process management and other utility functions
3 Copyright (C) 1998-2002 Ivo Timmermans <ivo@o2w.nl> 3 Copyright (C) 1998-2002 Ivo Timmermans <ivo@o2w.nl>
4 2000-2002 Guus Sliepen <guus@sliepen.eu.org> 4 2000-2002 Guus Sliepen <guus@sliepen.eu.org>
5 2003-2008 Marc Lehmann <gvpe@schmorp.de> 5 2003-2011 Marc Lehmann <gvpe@schmorp.de>
6 6
7 This file is part of GVPE. 7 This file is part of GVPE.
8 8
9 GVPE is free software; you can redistribute it and/or modify it 9 GVPE is free software; you can redistribute it and/or modify it
10 under the terms of the GNU General Public License as published by the 10 under the terms of the GNU General Public License as published by the
33 33
34#ifndef UTIL_H__ 34#ifndef UTIL_H__
35#define UTIL_H__ 35#define UTIL_H__
36 36
37#include <cstring> 37#include <cstring>
38#include <sys/types.h>
38 39
39#include <openssl/rsa.h> 40#include <openssl/rsa.h>
40 41
41#include "gettext.h" 42#include "gettext.h"
42 43
83 { 84 {
84 memset (v, -1, sizeof v); 85 memset (v, -1, sizeof v);
85 seq = seqno; 86 seq = seqno;
86 } 87 }
87 88
88 bool recv_ok (u32 seqno) 89 // 0 == ok, 1 == far history, 2 == duplicate in-window, 3 == far future
90 int seqno_classify (u32 seqno)
89 { 91 {
90 if (seqno <= seq - WINDOWSIZE) 92 if (seqno <= seq - WINDOWSIZE)
91 slog (L_ERR, _("received duplicate or outdated packet (received %08lx, expected %08lx)\n" 93 return 1;
92 "possible replay attack, or just massive packet reordering"), seqno, seq + 1);
93 else if (seqno > seq + WINDOWSIZE * 4) 94 else if (seqno > seq + WINDOWSIZE * 16)
94 slog (L_ERR, _("received duplicate or out-of-sync packet (received %08lx, expected %08lx)\n" 95 return 3;
95 "possible replay attack, or just massive packet loss"), seqno, seq + 1);
96 else 96 else
97 { 97 {
98 while (seqno > seq) 98 while (seqno > seq)
99 { 99 {
100 seq++; 100 seq++;
109 u32 s = seqno % WINDOWSIZE; 109 u32 s = seqno % WINDOWSIZE;
110 u32 *cell = v + (s >> 5); 110 u32 *cell = v + (s >> 5);
111 u32 mask = 1 << (s & 31); 111 u32 mask = 1 << (s & 31);
112 112
113 if (*cell & mask) 113 if (*cell & mask)
114 slog (L_ERR, _("received duplicate packet (received %08lx, expected %08lx)\n" 114 return 2;
115 "possible replay attack, or just packet duplication"), seqno, seq + 1);
116 else 115 else
117 { 116 {
118 *cell |= mask; 117 *cell |= mask;
119 return true; 118 return 0;
120 } 119 }
121 } 120 }
122
123 return false;
124 } 121 }
125}; 122};
126 123
127typedef callback<const char * ()> run_script_cb; 124typedef callback<const char *()> run_script_cb;
128 125
129// run a shell script (or actually an external program). 126// run a shell script (or actually an external program).
130bool run_script (const run_script_cb &cb, bool wait); 127pid_t run_script (const run_script_cb &cb, bool wait);
131 128
132#if ENABLE_HTTP_PROXY 129#if ENABLE_HTTP_PROXY
133u8 *base64_encode (const u8 *data, unsigned int len); 130u8 *base64_encode (const u8 *data, unsigned int len);
134#endif 131#endif
135 132
153 return RSA_private_decrypt (sizeof encr, 150 return RSA_private_decrypt (sizeof encr,
154 (unsigned char *)&encr, (unsigned char *)&chg, 151 (unsigned char *)&encr, (unsigned char *)&chg,
155 key, RSA_PKCS1_OAEP_PADDING) > 0; 152 key, RSA_PKCS1_OAEP_PADDING) > 0;
156} 153}
157 154
155/*****************************************************************************/
156
157void async (callback<void ()> work_cb, callback<void ()> done_cb);
158
158#endif 159#endif
159 160

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines