CMGDK r49-rc2
|
00001 / * C o p y r i g h t ( C ) 2 0 0 0 M y S Q L A B 00002 00003 T h i s p r o g r a m i s f r e e s o f t w a r e ; y o u c a n r e d i s t r i b u t e i t a n d / o r m o d i f y 00004 00005 i t u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y 00006 00007 t h e F r e e S o f t w a r e F o u n d a t i o n ; v e r s i o n 2 o f t h e L i c e n s e . 00008 00009 T h i s p r o g r a m i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l , 00010 00011 b u t W I T H O U T A N Y W A R R A N T Y ; w i t h o u t e v e n t h e i m p l i e d w a r r a n t y o f 00012 00013 M E R C H A N T A B I L I T Y o r F I T N E S S F O R A P A R T I C U L A R P U R P O S E . S e e t h e 00014 00015 G N U G e n e r a l P u b l i c L i c e n s e f o r m o r e d e t a i l s . 00016 00017 Y o u s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e 00018 00019 a l o n g w i t h t h i s p r o g r a m ; i f n o t , w r i t e t o t h e F r e e S o f t w a r e 00020 00021 F o u n d a t i o n , I n c . , 5 9 T e m p l e P l a c e , S u i t e 3 3 0 , B o s t o n , M A 0 2 1 1 1 - 1 3 0 7 U S A * / 00022 00023 / * 00024 00025 * V i o L i t e . 00026 00027 * P u r p o s e : i n c l u d e f i l e f o r V i o t h a t w i l l w o r k w i t h C a n d C + + 00028 00029 * / 00030 00031 # i f n d e f v i o _ v i o l i t e _ h _ 00032 00033 # d e f i n e v i o _ v i o l i t e _ h _ 00034 00035 # i n c l u d e " m y _ n e t . h " / * n e e d e d b e c a u s e o f s t r u c t i n _ a d d r * / 00036 00037 00038 00039 / * S i m p l e v i o i n t e r f a c e i n C ; T h e f u n c t i o n s a r e i m p l e m e n t e d i n v i o l i t e . c * / 00040 00041 # i f d e f _ _ c p l u s p l u s 00042 00043 e x t e r n " C " { 00044 00045 # e n d i f / * _ _ c p l u s p l u s * / 00046 00047 e n u m e n u m _ v i o _ t y p e 00048 00049 { 00050 00051 V I O _ C L O S E D , V I O _ T Y P E _ T C P I P , V I O _ T Y P E _ S O C K E T , V I O _ T Y P E _ N A M E D P I P E , 00052 00053 V I O _ T Y P E _ S S L , V I O _ T Y P E _ S H A R E D _ M E M O R Y 00054 00055 } ; 00056 00057 00058 00059 # d e f i n e V I O _ L O C A L H O S T 1 / * a l o c a l h o s t c o n n e c t i o n * / 00060 00061 # d e f i n e V I O _ B U F F E R E D _ R E A D 2 / * u s e b u f f e r e d r e a d * / 00062 00063 # d e f i n e V I O _ R E A D _ B U F F E R _ S I Z E 1 6 3 8 4 / * s i z e o f r e a d b u f f e r * / 00064 00065 V i o * v i o _ n e w ( m y _ s o c k e t s d , e n u m e n u m _ v i o _ t y p e t y p e , u i n t f l a g s ) ; 00066 00067 # i f d e f _ _ W I N _ _ 00068 00069 V i o * v i o _ n e w _ w i n 3 2 p i p e ( H A N D L E h P i p e ) ; 00070 00071 V i o * v i o _ n e w _ w i n 3 2 s h a r e d _ m e m o r y ( N E T * n e t , H A N D L E h a n d l e _ f i l e _ m a p , 00072 00073 H A N D L E h a n d l e _ m a p , 00074 00075 H A N D L E e v e n t _ s e r v e r _ w r o t e , 00076 00077 H A N D L E e v e n t _ s e r v e r _ r e a d , 00078 00079 H A N D L E e v e n t _ c l i e n t _ w r o t e , 00080 00081 H A N D L E e v e n t _ c l i e n t _ r e a d , 00082 00083 H A N D L E e v e n t _ c o n n _ c l o s e d ) ; 00084 00085 s i z e _ t v i o _ r e a d _ p i p e ( V i o * v i o , u c h a r * b u f , s i z e _ t s i z e ) ; 00086 00087 s i z e _ t v i o _ w r i t e _ p i p e ( V i o * v i o , c o n s t u c h a r * b u f , s i z e _ t s i z e ) ; 00088 00089 i n t v i o _ c l o s e _ p i p e ( V i o * v i o ) ; 00090 00091 # e l s e 00092 00093 # d e f i n e H A N D L E v o i d * 00094 00095 # e n d i f / * _ _ W I N _ _ * / 00096 00097 v o i d v i o _ d e l e t e ( V i o * v i o ) ; 00098 00099 i n t v i o _ c l o s e ( V i o * v i o ) ; 00100 00101 v o i d v i o _ r e s e t ( V i o * v i o , e n u m e n u m _ v i o _ t y p e t y p e , 00102 00103 m y _ s o c k e t s d , H A N D L E h P i p e , u i n t f l a g s ) ; 00104 00105 s i z e _ t v i o _ r e a d ( V i o * v i o , u c h a r * b u f , s i z e _ t s i z e ) ; 00106 00107 s i z e _ t v i o _ r e a d _ b u f f ( V i o * v i o , u c h a r * b u f , s i z e _ t s i z e ) ; 00108 00109 s i z e _ t v i o _ w r i t e ( V i o * v i o , c o n s t u c h a r * b u f , s i z e _ t s i z e ) ; 00110 00111 i n t v i o _ b l o c k i n g ( V i o * v i o , m y _ b o o l o n o f f , m y _ b o o l * o l d _ m o d e ) ; 00112 00113 m y _ b o o l v i o _ i s _ b l o c k i n g ( V i o * v i o ) ; 00114 00115 / * s e t s o c k o p t T C P _ N O D E L A Y a t I P P R O T O _ T C P l e v e l , w h e n p o s s i b l e * / 00116 00117 i n t v i o _ f a s t s e n d ( V i o * v i o ) ; 00118 00119 / * s e t s o c k o p t S O _ K E E P A L I V E a t S O L _ S O C K E T l e v e l , w h e n p o s s i b l e * / 00120 00121 i n t v i o _ k e e p a l i v e ( V i o * v i o , m y _ b o o l o n o f f ) ; 00122 00123 / * W h e n e v e r w e s h o u l d r e t r y t h e l a s t r e a d / w r i t e o p e r a t i o n . * / 00124 00125 m y _ b o o l v i o _ s h o u l d _ r e t r y ( V i o * v i o ) ; 00126 00127 / * C h e c k t h a t o p e r a t i o n w a s t i m e d o u t * / 00128 00129 m y _ b o o l v i o _ w a s _ i n t e r r u p t e d ( V i o * v i o ) ; 00130 00131 / * S h o r t t e x t d e s c r i p t i o n o f t h e s o c k e t f o r t h o s e , w h o a r e c u r i o u s . . * / 00132 00133 c o n s t c h a r * v i o _ d e s c r i p t i o n ( V i o * v i o ) ; 00134 00135 / * R e t u r n t h e t y p e o f t h e c o n n e c t i o n * / 00136 00137 e n u m e n u m _ v i o _ t y p e v i o _ t y p e ( V i o * v i o ) ; 00138 00139 / * R e t u r n l a s t e r r o r n u m b e r * / 00140 00141 i n t v i o _ e r r n o ( V i o * v i o ) ; 00142 00143 / * G e t s o c k e t n u m b e r * / 00144 00145 m y _ s o c k e t v i o _ f d ( V i o * v i o ) ; 00146 00147 / * R e m o t e p e e r ' s a d d r e s s a n d n a m e i n t e x t f o r m * / 00148 00149 m y _ b o o l v i o _ p e e r _ a d d r ( V i o * v i o , c h a r * b u f , u i n t 1 6 * p o r t , s i z e _ t b u f l e n ) ; 00150 00151 m y _ b o o l v i o _ p o l l _ r e a d ( V i o * v i o , u i n t t i m e o u t ) ; 00152 00153 m y _ b o o l v i o _ p e e k _ r e a d ( V i o * v i o , u i n t * b y t e s ) ; 00154 00155 s s i z e _ t v i o _ p e n d i n g ( V i o * v i o ) ; 00156 00157 # i f d e f H A V E _ O P E N S S L 00158 00159 # i n c l u d e < o p e n s s l / o p e n s s l v . h > 00160 00161 # i f O P E N S S L _ V E R S I O N _ N U M B E R < 0 x 0 0 9 0 7 0 0 f 00162 00163 # d e f i n e D E S _ c b l o c k d e s _ c b l o c k 00164 00165 # d e f i n e D E S _ k e y _ s c h e d u l e d e s _ k e y _ s c h e d u l e 00166 00167 # d e f i n e D E S _ s e t _ k e y _ u n c h e c k e d ( k , k s ) d e s _ s e t _ k e y _ u n c h e c k e d ( ( k ) , * ( k s ) ) 00168 00169 # d e f i n e D E S _ e d e 3 _ c b c _ e n c r y p t ( i , o , l , k 1 , k 2 , k 3 , i v , e ) d e s _ e d e 3 _ c b c _ e n c r y p t ( ( i ) , ( o ) , ( l ) , * ( k 1 ) , * ( k 2 ) , * ( k 3 ) , ( i v ) , ( e ) ) 00170 00171 # e n d i f 00172 00173 # d e f i n e H E A D E R _ D E S _ L O C L _ H d u m m y _ s o m e t h i n g 00174 00175 # d e f i n e Y A S S L _ M Y S Q L _ C O M P A T I B L E 00176 00177 # i f n d e f Y A S S L _ P R E F I X 00178 00179 # d e f i n e Y A S S L _ P R E F I X 00180 00181 # e n d i f 00182 00183 / * S e t y a S S L t o u s e s a m e t y p e a s M y S Q L d o f o r s o c k e t h a n d l e s * / 00184 00185 t y p e d e f m y _ s o c k e t Y A S S L _ S O C K E T _ T ; 00186 00187 # d e f i n e Y A S S L _ S O C K E T _ T _ D E F I N E D 00188 00189 # i n c l u d e < o p e n s s l / s s l . h > 00190 00191 # i n c l u d e < o p e n s s l / e r r . h > 00192 00193 # i f n d e f E M B E D D E D _ L I B R A R Y 00194 00195 s t r u c t s t _ V i o S S L F d 00196 00197 { 00198 00199 S S L _ C T X * s s l _ c o n t e x t ; 00200 00201 } ; 00202 00203 i n t s s l a c c e p t ( s t r u c t s t _ V i o S S L F d * , V i o * , l o n g t i m e o u t ) ; 00204 00205 i n t s s l c o n n e c t ( s t r u c t s t _ V i o S S L F d * , V i o * , l o n g t i m e o u t ) ; 00206 00207 s t r u c t s t _ V i o S S L F d 00208 00209 * n e w _ V i o S S L C o n n e c t o r F d ( c o n s t c h a r * k e y _ f i l e , c o n s t c h a r * c e r t _ f i l e , 00210 00211 c o n s t c h a r * c a _ f i l e , c o n s t c h a r * c a _ p a t h , 00212 00213 c o n s t c h a r * c i p h e r ) ; 00214 00215 s t r u c t s t _ V i o S S L F d 00216 00217 * n e w _ V i o S S L A c c e p t o r F d ( c o n s t c h a r * k e y _ f i l e , c o n s t c h a r * c e r t _ f i l e , 00218 00219 c o n s t c h a r * c a _ f i l e , c o n s t c h a r * c a _ p a t h , 00220 00221 c o n s t c h a r * c i p h e r ) ; 00222 00223 v o i d f r e e _ v i o _ s s l _ a c c e p t o r _ f d ( s t r u c t s t _ V i o S S L F d * f d ) ; 00224 00225 # e n d i f / * ! E M B E D D E D _ L I B R A R Y * / 00226 00227 # e n d i f / * H A V E _ O P E N S S L * / 00228 00229 # i f d e f H A V E _ S M E M 00230 00231 s i z e _ t v i o _ r e a d _ s h a r e d _ m e m o r y ( V i o * v i o , u c h a r * b u f , s i z e _ t s i z e ) ; 00232 00233 s i z e _ t v i o _ w r i t e _ s h a r e d _ m e m o r y ( V i o * v i o , c o n s t u c h a r * b u f , s i z e _ t s i z e ) ; 00234 00235 i n t v i o _ c l o s e _ s h a r e d _ m e m o r y ( V i o * v i o ) ; 00236 00237 # e n d i f 00238 00239 v o i d v i o _ e n d ( v o i d ) ; 00240 00241 # i f d e f _ _ c p l u s p l u s 00242 00243 } 00244 00245 # e n d i f 00246 00247 # i f ! d e f i n e d ( D O N T _ M A P _ V I O ) 00248 00249 # d e f i n e v i o _ d e l e t e ( v i o ) ( v i o ) - > v i o d e l e t e ( v i o ) 00250 00251 # d e f i n e v i o _ e r r n o ( v i o ) ( v i o ) - > v i o e r r n o ( v i o ) 00252 00253 # d e f i n e v i o _ r e a d ( v i o , b u f , s i z e ) ( ( v i o ) - > r e a d ) ( v i o , b u f , s i z e ) 00254 00255 # d e f i n e v i o _ w r i t e ( v i o , b u f , s i z e ) ( ( v i o ) - > w r i t e ) ( v i o , b u f , s i z e ) 00256 00257 # d e f i n e v i o _ b l o c k i n g ( v i o , s e t _ b l o c k i n g _ m o d e , o l d _ m o d e ) \ 00258 00259 ( v i o ) - > v i o b l o c k i n g ( v i o , s e t _ b l o c k i n g _ m o d e , o l d _ m o d e ) 00260 00261 # d e f i n e v i o _ i s _ b l o c k i n g ( v i o ) ( v i o ) - > i s _ b l o c k i n g ( v i o ) 00262 00263 # d e f i n e v i o _ f a s t s e n d ( v i o ) ( v i o ) - > f a s t s e n d ( v i o ) 00264 00265 # d e f i n e v i o _ k e e p a l i v e ( v i o , s e t _ k e e p _ a l i v e ) ( v i o ) - > v i o k e e p a l i v e ( v i o , s e t _ k e e p _ a l i v e ) 00266 00267 # d e f i n e v i o _ s h o u l d _ r e t r y ( v i o ) ( v i o ) - > s h o u l d _ r e t r y ( v i o ) 00268 00269 # d e f i n e v i o _ w a s _ i n t e r r u p t e d ( v i o ) ( v i o ) - > w a s _ i n t e r r u p t e d ( v i o ) 00270 00271 # d e f i n e v i o _ c l o s e ( v i o ) ( ( v i o ) - > v i o c l o s e ) ( v i o ) 00272 00273 # d e f i n e v i o _ p e e r _ a d d r ( v i o , b u f , p r t , b u f l e n ) ( v i o ) - > p e e r _ a d d r ( v i o , b u f , p r t , b u f l e n ) 00274 00275 # d e f i n e v i o _ t i m e o u t ( v i o , w h i c h , s e c o n d s ) ( v i o ) - > t i m e o u t ( v i o , w h i c h , s e c o n d s ) 00276 00277 # e n d i f / * ! d e f i n e d ( D O N T _ M A P _ V I O ) * / 00278 00279 / * T h i s e n u m e r a t o r i s u s e d i n p a r s e r - s h o u l d b e a l w a y s v i s i b l e * / 00280 00281 e n u m S S L _ t y p e 00282 00283 { 00284 00285 S S L _ T Y P E _ N O T _ S P E C I F I E D = - 1 , 00286 00287 S S L _ T Y P E _ N O N E , 00288 00289 S S L _ T Y P E _ A N Y , 00290 00291 S S L _ T Y P E _ X 5 0 9 , 00292 00293 S S L _ T Y P E _ S P E C I F I E D 00294 00295 } ; 00296 00297 00298 00299 / * H F T O D O - h i d e t h i s i f w e d o n ' t w a n t c l i e n t i n e m b e d d e d s e r v e r * / 00300 00301 / * T h i s s t r u c t u r e i s f o r e v e r y c o n n e c t i o n o n b o t h s i d e s * / 00302 00303 s t r u c t s t _ v i o 00304 00305 { 00306 00307 m y _ s o c k e t s d ; / * m y _ s o c k e t - r e a l o r i m a g i n a r y * / 00308 00309 H A N D L E h P i p e ; 00310 00311 m y _ b o o l l o c a l h o s t ; / * A r e w e f r o m l o c a l h o s t ? * / 00312 00313 i n t f c n t l _ m o d e ; / * B u f f e r e d f c n t l ( s d , F _ G E T F L ) * / 00314 00315 s t r u c t s o c k a d d r _ s t o r a g e l o c a l ; / * L o c a l i n t e r n e t a d d r e s s * / 00316 00317 s t r u c t s o c k a d d r _ s t o r a g e r e m o t e ; / * R e m o t e i n t e r n e t a d d r e s s * / 00318 00319 i n t a d d r L e n ; / * L e n g t h o f r e m o t e a d d r e s s * / 00320 00321 e n u m e n u m _ v i o _ t y p e t y p e ; / * T y p e o f c o n n e c t i o n * / 00322 00323 c h a r d e s c [ 3 0 ] ; / * S t r i n g d e s c r i p t i o n * / 00324 00325 c h a r * r e a d _ b u f f e r ; / * b u f f e r f o r v i o _ r e a d _ b u f f * / 00326 00327 c h a r * r e a d _ p o s ; / * s t a r t o f u n f e t c h e d d a t a i n t h e 00328 00329 r e a d b u f f e r * / 00330 00331 c h a r * r e a d _ e n d ; / * e n d o f u n f e t c h e d d a t a * / 00332 00333 / * f u n c t i o n p o i n t e r s . T h e y a r e s i m i l a r f o r s o c k e t / S S L / w h a t e v e r * / 00334 00335 v o i d ( * v i o d e l e t e ) ( V i o * ) ; 00336 00337 i n t ( * v i o e r r n o ) ( V i o * ) ; 00338 00339 s i z e _ t ( * r e a d ) ( V i o * , u c h a r * , s i z e _ t ) ; 00340 00341 s i z e _ t ( * w r i t e ) ( V i o * , c o n s t u c h a r * , s i z e _ t ) ; 00342 00343 i n t ( * v i o b l o c k i n g ) ( V i o * , m y _ b o o l , m y _ b o o l * ) ; 00344 00345 m y _ b o o l ( * i s _ b l o c k i n g ) ( V i o * ) ; 00346 00347 i n t ( * v i o k e e p a l i v e ) ( V i o * , m y _ b o o l ) ; 00348 00349 i n t ( * f a s t s e n d ) ( V i o * ) ; 00350 00351 m y _ b o o l ( * p e e r _ a d d r ) ( V i o * , c h a r * , u i n t 1 6 * , s i z e _ t ) ; 00352 00353 v o i d ( * i n _ a d d r ) ( V i o * , s t r u c t s o c k a d d r _ s t o r a g e * ) ; 00354 00355 m y _ b o o l ( * s h o u l d _ r e t r y ) ( V i o * ) ; 00356 00357 m y _ b o o l ( * w a s _ i n t e r r u p t e d ) ( V i o * ) ; 00358 00359 i n t ( * v i o c l o s e ) ( V i o * ) ; 00360 00361 v o i d ( * t i m e o u t ) ( V i o * , u n s i g n e d i n t w h i c h , u n s i g n e d i n t t i m e o u t ) ; 00362 00363 # i f d e f H A V E _ O P E N S S L 00364 00365 v o i d * s s l _ a r g ; 00366 00367 # e n d i f 00368 00369 # i f d e f H A V E _ S M E M 00370 00371 H A N D L E h a n d l e _ f i l e _ m a p ; 00372 00373 c h a r * h a n d l e _ m a p ; 00374 00375 H A N D L E e v e n t _ s e r v e r _ w r o t e ; 00376 00377 H A N D L E e v e n t _ s e r v e r _ r e a d ; 00378 00379 H A N D L E e v e n t _ c l i e n t _ w r o t e ; 00380 00381 H A N D L E e v e n t _ c l i e n t _ r e a d ; 00382 00383 H A N D L E e v e n t _ c o n n _ c l o s e d ; 00384 00385 s i z e _ t s h a r e d _ m e m o r y _ r e m a i n ; 00386 00387 c h a r * s h a r e d _ m e m o r y _ p o s ; 00388 00389 N E T * n e t ; 00390 00391 # e n d i f / * H A V E _ S M E M * / 00392 00393 } ; 00394 00395 # e n d i f / * v i o _ v i o l i t e _ h _ * / 00396 00397