From: jamal <hadi@cyberus•ca>
To: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6•org>
Cc: netdev@vger•kernel.org
Subject: [PATCH] iputils: ping by mark
Date: Sat, 13 Feb 2010 10:25:14 -0500 [thread overview]
Message-ID: <1266074714.6776.28.camel@bigi> (raw)
[-- Attachment #1: Type: text/plain, Size: 154 bytes --]
I am CCing this to netdev. Can someone help me poke on
Yoshifuji-san? I cant reach him using electrons or
complex physical molecules...
cheers,
jamal
[-- Attachment #2: ping-mark --]
[-- Type: text/plain, Size: 2747 bytes --]
commit 7afb1e52ecc8bda3677f8b7db8433486936d473f
Author: Jamal Hadi Salim <hadi@cyberus•ca>
Date: Mon Oct 12 16:59:27 2009 -0400
[PATCH] iputils: ping by mark
This extends ping to send a packet out based on a given
mark using -m option. Useful with policy routing to take different paths
to same destination ..
Signed-off-by: Jamal Hadi Salim <hadi@cyberus•ca>
diff --git a/ping.c b/ping.c
index b67cff4..5c913e0 100644
--- a/ping.c
+++ b/ping.c
@@ -1216,7 +1216,7 @@ void usage(void)
fprintf(stderr,
"Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]\n"
" [-p pattern] [-s packetsize] [-t ttl] [-I interface or address]\n"
-" [-M mtu discovery hint] [-S sndbuf]\n"
+" [-M mtu discovery hint] [-m mark] [-S sndbuf]\n"
" [ -T timestamp option ] [ -Q tos ] [hop1 ...] destination\n");
exit(2);
}
diff --git a/ping_common.c b/ping_common.c
index be36cbd..b1cc9fc 100644
--- a/ping_common.c
+++ b/ping_common.c
@@ -4,6 +4,7 @@
int options;
+int mark;
int sndbuf;
int ttl;
int rtt;
@@ -141,6 +142,17 @@ void common_options(int ch)
options |= F_INTERVAL;
break;
}
+ case 'm':
+ {
+ char *endp;
+ mark = (int)strtoul(optarg, &endp, 10);
+ if (mark < 0 || *endp != '\0') {
+ fprintf(stderr, "mark cannot be negative");
+ exit(2);
+ }
+ options |= F_MARK;
+ break;
+ }
case 'w':
deadline = atoi(optarg);
if (deadline < 0) {
@@ -442,6 +454,15 @@ void setup(int icmp_sock)
fprintf(stderr, "Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP\n");
}
#endif
+ if (options & F_MARK) {
+ if (setsockopt(icmp_sock, SOL_SOCKET, SO_MARK,
+ &mark, sizeof(mark)) == -1) {
+ /* we probably dont wanna exit since old kernels
+ * dont support mark ..
+ */
+ fprintf(stderr, "Warning: Failed to set mark %d\n", mark);
+ }
+ }
/* Set some SNDTIMEO to prevent blocking forever
* on sends, when device is too slow or stalls. Just put limit
diff --git a/ping_common.h b/ping_common.h
index 5b80118..466792e 100644
--- a/ping_common.h
+++ b/ping_common.h
@@ -60,6 +60,7 @@ extern int options;
#define F_STRICTSOURCE 0x8000
#define F_NOLOOP 0x10000
#define F_TTL 0x20000
+#define F_MARK 0x40000
/*
* MAX_DUP_CHK is the number of bits in received table, i.e. the maximum
@@ -118,9 +119,9 @@ case 'a': case 'U': case 'c': case 'd': \
case 'f': case 'i': case 'w': case 'l': \
case 'S': case 'n': case 'p': case 'q': \
case 'r': case 's': case 'v': case 'L': \
-case 't': case 'A': case 'W': case 'B':
+case 't': case 'A': case 'W': case 'B': case 'm':
-#define COMMON_OPTSTR "h?VQ:I:M:aUc:dfi:w:l:S:np:qrs:vLt:AW:B"
+#define COMMON_OPTSTR "h?VQ:I:M:aUc:dfi:w:l:S:np:qrs:vLt:AW:Bm:"
/*
next reply other threads:[~2010-02-13 15:25 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-13 15:25 jamal [this message]
2010-02-13 15:38 ` [PATCH] iputils: ping by mark YOSHIFUJI Hideaki
2010-02-13 15:47 ` YOSHIFUJI Hideaki
2010-02-13 16:21 ` jamal
2010-02-13 17:35 ` YOSHIFUJI Hideaki
-- strict thread matches above, loose matches on Subject: below --
2009-10-12 21:05 jamal
2009-10-16 21:05 ` Rob Townley
2009-10-17 12:30 ` jamal
2009-10-17 18:54 ` Maciej Żenczykowski
2009-10-17 23:04 ` jamal
2009-10-17 23:34 ` jamal
2009-10-18 1:46 ` Maciej Żenczykowski
2009-10-18 11:37 ` jamal
2009-10-18 22:57 ` Maciej Żenczykowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1266074714.6776.28.camel@bigi \
--to=hadi@cyberus$(echo .)ca \
--cc=netdev@vger$(echo .)kernel.org \
--cc=yoshfuji@linux-ipv6$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox