Advertisement
Guest User

dropsendto

a guest
Dec 7th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1. #include <signal.h>
  2. #include <sys/wait.h>
  3. #include <stdio.h>
  4. #include <fcntl.h>
  5. #include <sys/stat.h>
  6. #include <sys/types.h>
  7. #include <unistd.h>
  8. #include <string.h>
  9. #include <stdlib.h>
  10. #include <netdb.h>
  11. #include <errno.h>
  12. #include <sys/socket.h>
  13. #include <netinet/in.h>
  14. #include <arpa/inet.h>
  15. #include <sys/time.h>
  16. #include "dropsendto.h"
  17.  
  18. ssize_t dropsendto (int __fd, const void *__buf, size_t __n, int __flags, __CONST_SOCKADDR_ARG __addr, socklen_t __addr_len, int *global_count, int *lossnum_count, int lossnum, int loss_mod){
  19.  
  20.     if(lossnum == 0){
  21.         int val2 = sendto( __fd, __buf, __n, __flags, __addr, __addr_len);
  22.         //printf("sent %d\t", *global_count);
  23.         (*global_count)++;     
  24.         return val2;           
  25.     }
  26.  
  27.     int t = (*global_count);
  28.     if ((t%loss_mod) != 0){
  29.         int val = sendto( __fd, __buf, __n, __flags, __addr, __addr_len);
  30.         printf("sent %d\t", t - 1);
  31.         (*global_count)++;     
  32.         return val;
  33.     }
  34.     else{
  35.         if((*lossnum_count) > 0){
  36.             (*lossnum_count)--;
  37.             if ((*lossnum_count) == 0){
  38.                 (*global_count) = 1;
  39.                 (*lossnum_count) = lossnum;
  40.                 return 1;
  41.             }
  42.             (*global_count) = loss_mod;
  43.             return 1;
  44.         }
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement