set_flow_id
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. eval 'exec perl $0 -S ${1+"$@"}' # -*- perl -*-
  2.     if 0;
  3. require 5.001;
  4. #
  5. # set_flow_id.pl
  6. # Copyright (C) 1997 by USC/ISI
  7. #
  8. # Derived from
  9. # Id: rbp_hack_attr.pl,v 1.1 1997/10/08 20:31:46 johnh Exp 
  10. # from LSAM Project's rate-based pacing work.
  11. #
  12. # Copyright (c) 1997 University of Southern California.
  13. # All rights reserved.                                            
  14. #                                                                
  15. # Redistribution and use in source and binary forms are permitted
  16. # provided that the above copyright notice and this paragraph are
  17. # duplicated in all such forms and that any documentation, advertising
  18. # materials, and other materials related to such distribution and use
  19. # acknowledge that the software was developed by the University of
  20. # Southern California, Information Sciences Institute.  The name of the
  21. # University may not be used to endorse or promote products derived from
  22. # this software without specific prior written permission.
  23. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  24. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  25. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  26. sub usage {
  27.     print STDERR <<END;
  28. usage: $0
  29. Hack the attribute field in ns trace output to make it
  30. be the source/dest we want.
  31. By default, sets the attribute to the minimum of the source or destination.
  32. Options:
  33.     -m     take minimum (default)
  34.     -s     take source
  35.     -d     take destination
  36. END
  37.     exit 1;
  38. }
  39. #use strict;
  40. use Getopt::Long;
  41. &usage if ($#ARGV >= 0 && $ARGV[0] eq '-?');
  42. my(%opts);
  43. &GetOptions(%opts, qw(m s d));
  44. # &usage if ($#ARGV < 0);
  45. my($MODE_MIN, $MODE_SRC, $MODE_DEST) = (0..10);
  46. my($mode) = $MODE_MIN;
  47. $mode = $MODE_MIN if (defined($opts{'m'}));
  48. $mode = $MODE_SRC if (defined($opts{'s'}));
  49. $mode = $MODE_DEST if (defined($opts{'d'}));
  50. while (<>) {
  51.     if (/^[^-+hdrE]/) {
  52. print;
  53.     } else {
  54. chomp;
  55. my(@f) = split(/ /);
  56. if ($f[0] ne "E") {
  57.     ($hacky_src, $hacky_dest) = @f[8,9];
  58.     ($src) = split(/./, $hacky_src);
  59.     ($dest) = split(/./, $hacky_dest);
  60.     ($min) = ($src < $dest) ? $src : $dest;
  61.     $f[7] = $min if ($mode == $MODE_MIN);
  62.     $f[7] = $src if ($mode == $MODE_SRC);
  63.     $f[7] = $dest if ($mode == $MODE_DEST);
  64. } else {
  65.     ($src, $dest) = @f[2,3];
  66.     $min = ($src < $dest) ? $src : $dest;
  67.     $f[6] = $min if ($mode == $MODE_MIN);
  68.     $f[6] = $src if ($mode == $MODE_SRC);
  69.     $f[6] = $dest if ($mode == $MODE_DEST);
  70. }
  71. print join(" ", @f), "n";
  72.     };
  73. }
  74. exit 0;