]> git.gsnw.org Git - fping.git/commitdiff
add path mtu discovert (MTU) AKA Don't Fragment support
authorDon Bowman <don.waterloo@gmail.com>
Thu, 18 Feb 2016 00:06:02 +0000 (00:06 +0000)
committerDon Bowman <don.waterloo@gmail.com>
Thu, 18 Feb 2016 00:06:02 +0000 (00:06 +0000)
src/fping.c

index a7af5ed9a366b64885c7bcd1925c3f142e4c418c..81f648915d9db089f76bd1d2f0cefc93e98d45ae 100644 (file)
@@ -377,10 +377,19 @@ int main( int argc, char **argv )
 
     /* get command line options */
 
-    while( ( c = getopt( argc, argv, "gedhlmnqusaAvDRz:t:H:i:p:f:r:c:b:C:Q:B:S:I:T:O:" ) ) != EOF )
+    while( ( c = getopt( argc, argv, "gedhlmnqusaAvDRz:t:H:i:p:f:r:c:b:C:Q:B:S:I:T:O:M" ) ) != EOF )
     {
         switch( c )
         {
+        case 'M':
+            {
+            int val = IP_PMTUDISC_DO;
+            if (setsockopt(s, IPPROTO_IP, IP_MTU_DISCOVER, &val, sizeof(val))) {
+                perror("setsockopt IP_MTU_DISCOVER");
+            }
+            }
+            break;
+
         case 't':
             if( !( timeout = ( unsigned int )atoi( optarg ) * 100 ) )
                 usage(1);
@@ -2380,6 +2389,7 @@ void usage(int is_error)
 #endif
     fprintf(out, "   -l         loop sending pings forever\n" );
     fprintf(out, "   -m         ping multiple interfaces on target host\n" );
+    fprintf(out, "   -M         Don't Fragment (IP_PMTUDISC_DO)\n" );
     fprintf(out, "   -n         show targets by name (-d is equivalent)\n" );
     fprintf(out, "   -O n       set the type of service (tos) flag on the ICMP packets\n" );
     fprintf(out, "   -p n       interval between ping packets to one target (in millisec)\n" );