From: "YOSHIFUJI Hideaki / 吉藤英明" <yoshfuji@linux-ipv6.org>
To: davem@redhat.com, kuznet@ms2.inr.ac.ru
Cc: netdev@oss.sgi.com, usagi@linux-ipv6.org
Subject: [PATCH] [NET] use fl6_{src,dst} etc.
Date: Tue, 15 Apr 2003 02:31:58 +0900 (JST) [thread overview]
Message-ID: <20030415.023158.36869337.yoshfuji@linux-ipv6.org> (raw)
Hello.
This cleans up usage of members in flowi{}; use fl6_{src,dst} etc.
Patch is against linux-2.5.67 + Changeset 1.1202.
(I think this change is suitable for linux-2.4 but I haven't prepared patch
againt it.)
Thanks.
Index: include/net/flow.h
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/include/net/flow.h,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.58.1
diff -u -r1.1.1.2 -r1.1.1.2.58.1
--- include/net/flow.h 16 Oct 2002 04:25:20 -0000 1.1.1.2
+++ include/net/flow.h 14 Apr 2003 14:42:49 -0000 1.1.1.2.58.1
@@ -52,4 +52,8 @@
} uli_u;
};
+#define fl_sport uli_u.ports.sport
+#define fl_dport uli_u.ports.dport
+#define fl_type uli_u.icmpt.type
+#define fl_code uli_u.icmpt.code
#endif
Index: net/ipv6/datagram.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/datagram.c,v
retrieving revision 1.1.1.3
retrieving revision 1.1.1.3.54.1
diff -u -r1.1.1.3 -r1.1.1.3.54.1
--- net/ipv6/datagram.c 30 Oct 2002 09:43:18 -0000 1.1.1.3
+++ net/ipv6/datagram.c 14 Apr 2003 15:42:43 -0000 1.1.1.3.54.1
@@ -91,7 +91,7 @@
serr->ee.ee_info = info;
serr->ee.ee_data = 0;
serr->addr_offset = (u8*)&iph->daddr - skb->nh.raw;
- serr->port = fl->uli_u.ports.dport;
+ serr->port = fl->fl_dport;
skb->h.raw = skb->tail;
__skb_pull(skb, skb->tail - skb->data);
Index: net/ipv6/icmp.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/icmp.c,v
retrieving revision 1.1.1.9
retrieving revision 1.1.1.9.10.1
diff -u -r1.1.1.9 -r1.1.1.9.10.1
--- net/ipv6/icmp.c 25 Mar 2003 04:33:45 -0000 1.1.1.9
+++ net/ipv6/icmp.c 14 Apr 2003 14:42:49 -0000 1.1.1.9.10.1
@@ -312,12 +312,12 @@
}
fl.proto = IPPROTO_ICMPV6;
- fl.nl_u.ip6_u.daddr = &hdr->saddr;
- fl.nl_u.ip6_u.saddr = saddr;
+ fl.fl6_dst = &hdr->saddr;
+ fl.fl6_src = saddr;
fl.oif = iif;
fl.fl6_flowlabel = 0;
- fl.uli_u.icmpt.type = type;
- fl.uli_u.icmpt.code = code;
+ fl.fl_type = type;
+ fl.fl_code = code;
icmpv6_xmit_lock();
@@ -386,12 +386,12 @@
msg.daddr = &skb->nh.ipv6h->saddr;
fl.proto = IPPROTO_ICMPV6;
- fl.nl_u.ip6_u.daddr = msg.daddr;
- fl.nl_u.ip6_u.saddr = saddr;
+ fl.fl6_dst = msg.daddr;
+ fl.fl6_src = saddr;
fl.oif = skb->dev->ifindex;
fl.fl6_flowlabel = 0;
- fl.uli_u.icmpt.type = ICMPV6_ECHO_REPLY;
- fl.uli_u.icmpt.code = 0;
+ fl.fl_type = ICMPV6_ECHO_REPLY;
+ fl.fl_code = 0;
icmpv6_xmit_lock();
Index: net/ipv6/ip6_output.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/ip6_output.c,v
retrieving revision 1.1.1.8
retrieving revision 1.1.1.8.8.2
diff -u -r1.1.1.8 -r1.1.1.8.8.2
--- net/ipv6/ip6_output.c 2 Apr 2003 04:16:14 -0000 1.1.1.8
+++ net/ipv6/ip6_output.c 14 Apr 2003 15:42:43 -0000 1.1.1.8.8.2
@@ -146,8 +146,8 @@
fl.fl6_src = &iph->saddr;
fl.oif = skb->sk ? skb->sk->bound_dev_if : 0;
fl.fl6_flowlabel = 0;
- fl.uli_u.ports.dport = 0;
- fl.uli_u.ports.sport = 0;
+ fl.fl_dport = 0;
+ fl.fl_sport = 0;
dst = ip6_route_output(skb->sk, &fl);
@@ -186,7 +186,7 @@
struct ipv6_txoptions *opt)
{
struct ipv6_pinfo *np = sk ? inet6_sk(sk) : NULL;
- struct in6_addr *first_hop = fl->nl_u.ip6_u.daddr;
+ struct in6_addr *first_hop = fl->fl6_dst;
struct dst_entry *dst = skb->dst;
struct ipv6hdr *hdr;
u8 proto = fl->proto;
@@ -241,7 +241,7 @@
hdr->nexthdr = proto;
hdr->hop_limit = hlimit;
- ipv6_addr_copy(&hdr->saddr, fl->nl_u.ip6_u.saddr);
+ ipv6_addr_copy(&hdr->saddr, fl->fl6_src);
ipv6_addr_copy(&hdr->daddr, first_hop);
mtu = dst_pmtu(dst);
@@ -306,8 +306,8 @@
hdr->hop_limit = hlimit;
hdr->nexthdr = fl->proto;
- ipv6_addr_copy(&hdr->saddr, fl->nl_u.ip6_u.saddr);
- ipv6_addr_copy(&hdr->daddr, fl->nl_u.ip6_u.daddr);
+ ipv6_addr_copy(&hdr->saddr, fl->fl6_src);
+ ipv6_addr_copy(&hdr->daddr, fl->fl6_dst);
return hdr;
}
@@ -524,7 +524,7 @@
fl->fl6_dst = rt0->addr;
}
- if (!fl->oif && ipv6_addr_is_multicast(fl->nl_u.ip6_u.daddr))
+ if (!fl->oif && ipv6_addr_is_multicast(fl->fl6_dst))
fl->oif = np->mcast_oif;
dst = __sk_dst_check(sk, np->dst_cookie);
@@ -701,7 +701,7 @@
* cleanup
*/
out:
- ip6_dst_store(sk, dst, fl->nl_u.ip6_u.daddr == &np->daddr ? &np->daddr : NULL);
+ ip6_dst_store(sk, dst, fl->fl6_dst == &np->daddr ? &np->daddr : NULL);
if (err > 0)
err = np->recverr ? net_xmit_errno(err) : 0;
return err;
Index: net/ipv6/ndisc.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/ndisc.c,v
retrieving revision 1.1.1.8
retrieving revision 1.1.1.8.2.1
diff -u -r1.1.1.8 -r1.1.1.8.2.1
--- net/ipv6/ndisc.c 14 Apr 2003 04:34:17 -0000 1.1.1.8
+++ net/ipv6/ndisc.c 14 Apr 2003 14:42:49 -0000 1.1.1.8.2.1
@@ -405,8 +405,8 @@
fl->fl6_src = saddr;
fl->fl6_dst = daddr;
fl->proto = IPPROTO_ICMPV6;
- fl->uli_u.icmpt.type = type;
- fl->uli_u.icmpt.code = 0;
+ fl->fl_type = type;
+ fl->fl_code = 0;
}
static void ndisc_send_na(struct net_device *dev, struct neighbour *neigh,
Index: net/ipv6/route.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/route.c,v
retrieving revision 1.1.1.11
retrieving revision 1.1.1.11.2.1
diff -u -r1.1.1.11 -r1.1.1.11.2.1
--- net/ipv6/route.c 14 Apr 2003 04:34:17 -0000 1.1.1.11
+++ net/ipv6/route.c 14 Apr 2003 14:42:49 -0000 1.1.1.11.2.1
@@ -449,13 +449,12 @@
int strict;
int attempts = 3;
- strict = ipv6_addr_type(fl->nl_u.ip6_u.daddr) & (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL);
+ strict = ipv6_addr_type(fl->fl6_dst) & (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL);
relookup:
read_lock_bh(&rt6_lock);
- fn = fib6_lookup(&ip6_routing_table, fl->nl_u.ip6_u.daddr,
- fl->nl_u.ip6_u.saddr);
+ fn = fib6_lookup(&ip6_routing_table, fl->fl6_dst, fl->fl6_src);
restart:
rt = fn->leaf;
@@ -477,9 +476,8 @@
if (!rt->rt6i_nexthop && !(rt->rt6i_flags & RTF_NONEXTHOP)) {
read_unlock_bh(&rt6_lock);
- rt = rt6_cow(rt, fl->nl_u.ip6_u.daddr,
- fl->nl_u.ip6_u.saddr);
-
+ rt = rt6_cow(rt, fl->fl6_dst, fl->fl6_src);
+
if (rt->u.dst.error != -EEXIST || --attempts <= 0)
goto out2;
@@ -1585,15 +1583,11 @@
skb->mac.raw = skb->data;
skb_reserve(skb, MAX_HEADER + sizeof(struct ipv6hdr));
- fl.proto = 0;
- fl.nl_u.ip6_u.daddr = NULL;
- fl.nl_u.ip6_u.saddr = NULL;
- fl.uli_u.icmpt.type = 0;
- fl.uli_u.icmpt.code = 0;
+ memset(&fl, 0, sizeof(fl));
if (rta[RTA_SRC-1])
- fl.nl_u.ip6_u.saddr = (struct in6_addr*)RTA_DATA(rta[RTA_SRC-1]);
+ fl.fl6_src = (struct in6_addr*)RTA_DATA(rta[RTA_SRC-1]);
if (rta[RTA_DST-1])
- fl.nl_u.ip6_u.daddr = (struct in6_addr*)RTA_DATA(rta[RTA_DST-1]);
+ fl.fl6_dst = (struct in6_addr*)RTA_DATA(rta[RTA_DST-1]);
if (rta[RTA_IIF-1])
memcpy(&iif, RTA_DATA(rta[RTA_IIF-1]), sizeof(int));
@@ -1617,8 +1611,7 @@
NETLINK_CB(skb).dst_pid = NETLINK_CB(in_skb).pid;
err = rt6_fill_node(skb, rt,
- fl.nl_u.ip6_u.daddr,
- fl.nl_u.ip6_u.saddr,
+ fl.fl6_dst, fl.fl6_src,
iif,
RTM_NEWROUTE, NETLINK_CB(in_skb).pid,
nlh->nlmsg_seq, nlh);
Index: net/ipv6/tcp_ipv6.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/tcp_ipv6.c,v
retrieving revision 1.1.1.12
retrieving revision 1.1.1.12.6.2
diff -u -r1.1.1.12 -r1.1.1.12.6.2
--- net/ipv6/tcp_ipv6.c 8 Apr 2003 08:57:58 -0000 1.1.1.12
+++ net/ipv6/tcp_ipv6.c 14 Apr 2003 15:42:43 -0000 1.1.1.12.6.2
@@ -670,12 +670,12 @@
fl.fl6_dst = &np->daddr;
fl.fl6_src = saddr;
fl.oif = sk->bound_dev_if;
- fl.uli_u.ports.dport = usin->sin6_port;
- fl.uli_u.ports.sport = inet->sport;
+ fl.fl_dport = usin->sin6_port;
+ fl.fl_sport = inet->sport;
if (np->opt && np->opt->srcrt) {
struct rt0_hdr *rt0 = (struct rt0_hdr *)np->opt->srcrt;
- fl.nl_u.ip6_u.daddr = rt0->addr;
+ fl.fl6_dst = rt0->addr;
}
if (!fl.fl6_src)
@@ -796,11 +796,11 @@
for now.
*/
fl.proto = IPPROTO_TCP;
- fl.nl_u.ip6_u.daddr = &np->daddr;
- fl.nl_u.ip6_u.saddr = &np->saddr;
+ fl.fl6_dst = &np->daddr;
+ fl.fl6_src = &np->saddr;
fl.oif = sk->bound_dev_if;
- fl.uli_u.ports.dport = inet->dport;
- fl.uli_u.ports.sport = inet->sport;
+ fl.fl_dport = inet->dport;
+ fl.fl_sport = inet->sport;
dst = ip6_route_output(sk, &fl);
} else
@@ -881,12 +881,12 @@
int err = -1;
fl.proto = IPPROTO_TCP;
- fl.nl_u.ip6_u.daddr = &req->af.v6_req.rmt_addr;
- fl.nl_u.ip6_u.saddr = &req->af.v6_req.loc_addr;
+ fl.fl6_dst = &req->af.v6_req.rmt_addr;
+ fl.fl6_src = &req->af.v6_req.loc_addr;
fl.fl6_flowlabel = 0;
fl.oif = req->af.v6_req.iif;
- fl.uli_u.ports.dport = req->rmt_port;
- fl.uli_u.ports.sport = inet_sk(sk)->sport;
+ fl.fl_dport = req->rmt_port;
+ fl.fl_sport = inet_sk(sk)->sport;
if (dst == NULL) {
opt = np->opt;
@@ -901,7 +901,7 @@
if (opt && opt->srcrt) {
struct rt0_hdr *rt0 = (struct rt0_hdr *) opt->srcrt;
- fl.nl_u.ip6_u.daddr = rt0->addr;
+ fl.fl6_dst = rt0->addr;
}
dst = ip6_route_output(sk, &fl);
@@ -917,7 +917,7 @@
&req->af.v6_req.loc_addr, &req->af.v6_req.rmt_addr,
csum_partial((char *)th, skb->len, skb->csum));
- fl.nl_u.ip6_u.daddr = &req->af.v6_req.rmt_addr;
+ fl.fl6_dst = &req->af.v6_req.rmt_addr;
err = ip6_xmit(sk, skb, &fl, opt);
if (err == NET_XMIT_CN)
err = 0;
@@ -1019,19 +1019,18 @@
buff->csum = csum_partial((char *)t1, sizeof(*t1), 0);
- fl.nl_u.ip6_u.daddr = &skb->nh.ipv6h->saddr;
- fl.nl_u.ip6_u.saddr = &skb->nh.ipv6h->daddr;
+ fl.fl6_dst = &skb->nh.ipv6h->saddr;
+ fl.fl6_src = &skb->nh.ipv6h->daddr;
fl.fl6_flowlabel = 0;
- t1->check = csum_ipv6_magic(fl.nl_u.ip6_u.saddr,
- fl.nl_u.ip6_u.daddr,
+ t1->check = csum_ipv6_magic(fl.fl6_src, fl.fl6_dst,
sizeof(*t1), IPPROTO_TCP,
buff->csum);
fl.proto = IPPROTO_TCP;
fl.oif = tcp_v6_iif(skb);
- fl.uli_u.ports.dport = t1->dest;
- fl.uli_u.ports.sport = t1->source;
+ fl.fl_dport = t1->dest;
+ fl.fl_sport = t1->source;
/* sk = NULL, but it is safe for now. RST socket required. */
buff->dst = ip6_route_output(NULL, &fl);
@@ -1084,19 +1083,18 @@
buff->csum = csum_partial((char *)t1, tot_len, 0);
- fl.nl_u.ip6_u.daddr = &skb->nh.ipv6h->saddr;
- fl.nl_u.ip6_u.saddr = &skb->nh.ipv6h->daddr;
+ fl.fl6_dst = &skb->nh.ipv6h->saddr;
+ fl.fl6_src = &skb->nh.ipv6h->daddr;
fl.fl6_flowlabel = 0;
- t1->check = csum_ipv6_magic(fl.nl_u.ip6_u.saddr,
- fl.nl_u.ip6_u.daddr,
+ t1->check = csum_ipv6_magic(fl.fl6_src, fl.fl6_dst,
tot_len, IPPROTO_TCP,
buff->csum);
fl.proto = IPPROTO_TCP;
fl.oif = tcp_v6_iif(skb);
- fl.uli_u.ports.dport = t1->dest;
- fl.uli_u.ports.sport = t1->source;
+ fl.fl_dport = t1->dest;
+ fl.fl_sport = t1->source;
buff->dst = ip6_route_output(NULL, &fl);
@@ -1335,16 +1333,16 @@
if (dst == NULL) {
fl.proto = IPPROTO_TCP;
- fl.nl_u.ip6_u.daddr = &req->af.v6_req.rmt_addr;
+ fl.fl6_dst = &req->af.v6_req.rmt_addr;
if (opt && opt->srcrt) {
struct rt0_hdr *rt0 = (struct rt0_hdr *) opt->srcrt;
- fl.nl_u.ip6_u.daddr = rt0->addr;
+ fl.fl6_dst = rt0->addr;
}
- fl.nl_u.ip6_u.saddr = &req->af.v6_req.loc_addr;
+ fl.fl6_src = &req->af.v6_req.loc_addr;
fl.fl6_flowlabel = 0;
fl.oif = sk->bound_dev_if;
- fl.uli_u.ports.dport = req->rmt_port;
- fl.uli_u.ports.sport = inet_sk(sk)->sport;
+ fl.fl_dport = req->rmt_port;
+ fl.fl_sport = inet_sk(sk)->sport;
dst = ip6_route_output(sk, &fl);
}
@@ -1732,16 +1730,16 @@
struct flowi fl;
fl.proto = IPPROTO_TCP;
- fl.nl_u.ip6_u.daddr = &np->daddr;
- fl.nl_u.ip6_u.saddr = &np->saddr;
+ fl.fl6_dst = &np->daddr;
+ fl.fl6_src = &np->saddr;
fl.fl6_flowlabel = np->flow_label;
fl.oif = sk->bound_dev_if;
- fl.uli_u.ports.dport = inet->dport;
- fl.uli_u.ports.sport = inet->sport;
+ fl.fl_dport = inet->dport;
+ fl.fl_sport = inet->sport;
if (np->opt && np->opt->srcrt) {
struct rt0_hdr *rt0 = (struct rt0_hdr *) np->opt->srcrt;
- fl.nl_u.ip6_u.daddr = rt0->addr;
+ fl.fl6_dst = rt0->addr;
}
dst = ip6_route_output(sk, &fl);
@@ -1774,12 +1772,12 @@
fl.fl6_flowlabel = np->flow_label;
IP6_ECN_flow_xmit(sk, fl.fl6_flowlabel);
fl.oif = sk->bound_dev_if;
- fl.uli_u.ports.sport = inet->sport;
- fl.uli_u.ports.dport = inet->dport;
+ fl.fl_sport = inet->sport;
+ fl.fl_dport = inet->dport;
if (np->opt && np->opt->srcrt) {
struct rt0_hdr *rt0 = (struct rt0_hdr *) np->opt->srcrt;
- fl.nl_u.ip6_u.daddr = rt0->addr;
+ fl.fl6_dst = rt0->addr;
}
dst = __sk_dst_check(sk, np->dst_cookie);
@@ -1799,7 +1797,7 @@
skb->dst = dst_clone(dst);
/* Restore final destination back after routing done */
- fl.nl_u.ip6_u.daddr = &np->daddr;
+ fl.fl6_dst = &np->daddr;
return ip6_xmit(sk, skb, &fl, np->opt);
}
Index: net/ipv6/udp.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/udp.c,v
retrieving revision 1.1.1.9
retrieving revision 1.1.1.9.8.1
diff -u -r1.1.1.9 -r1.1.1.9.8.1
--- net/ipv6/udp.c 2 Apr 2003 04:16:14 -0000 1.1.1.9
+++ net/ipv6/udp.c 14 Apr 2003 15:42:43 -0000 1.1.1.9.8.1
@@ -352,8 +352,8 @@
fl.fl6_dst = &np->daddr;
fl.fl6_src = &saddr;
fl.oif = sk->bound_dev_if;
- fl.uli_u.ports.dport = inet->dport;
- fl.uli_u.ports.sport = inet->sport;
+ fl.fl_dport = inet->dport;
+ fl.fl_sport = inet->sport;
if (!fl.oif && (addr_type&IPV6_ADDR_MULTICAST))
fl.oif = np->mcast_oif;
@@ -936,8 +936,8 @@
fl.fl6_dst = daddr;
if (fl.fl6_src == NULL && !ipv6_addr_any(&np->saddr))
fl.fl6_src = &np->saddr;
- fl.uli_u.ports.dport = udh.uh.dest;
- fl.uli_u.ports.sport = udh.uh.source;
+ fl.fl_dport = udh.uh.dest;
+ fl.fl_sport = udh.uh.source;
err = ip6_build_xmit(sk, udpv6_getfrag, &udh, &fl, len, opt, hlimit,
msg->msg_flags);
Index: net/ipv6/xfrm6_policy.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/xfrm6_policy.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -u -r1.1.1.2 -r1.1.1.2.2.1
--- net/ipv6/xfrm6_policy.c 14 Apr 2003 04:34:17 -0000 1.1.1.2
+++ net/ipv6/xfrm6_policy.c 14 Apr 2003 15:42:43 -0000 1.1.1.2.2.1
@@ -195,8 +195,8 @@
if (pskb_may_pull(skb, skb->nh.raw + offset + 4 - skb->data)) {
u16 *ports = (u16 *)exthdr;
- fl->uli_u.ports.sport = ports[0];
- fl->uli_u.ports.dport = ports[1];
+ fl->fl_sport = ports[0];
+ fl->fl_dport = ports[1];
}
return;
Index: net/ipv6/xfrm6_state.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/xfrm6_state.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.10.1
diff -u -r1.1.1.1 -r1.1.1.1.10.1
--- net/ipv6/xfrm6_state.c 24 Mar 2003 05:46:10 -0000 1.1.1.1
+++ net/ipv6/xfrm6_state.c 14 Apr 2003 15:42:43 -0000 1.1.1.1.10.1
@@ -27,9 +27,9 @@
* to current session. */
memcpy(&x->sel.daddr, fl->fl6_dst, sizeof(struct in6_addr));
memcpy(&x->sel.saddr, fl->fl6_src, sizeof(struct in6_addr));
- x->sel.dport = fl->uli_u.ports.dport;
+ x->sel.dport = fl->fl_dport;
x->sel.dport_mask = ~0;
- x->sel.sport = fl->uli_u.ports.sport;
+ x->sel.sport = fl->fl_sport;
x->sel.sport_mask = ~0;
x->sel.prefixlen_d = 128;
x->sel.prefixlen_s = 128;
--
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@linux-ipv6.org>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA
next reply other threads:[~2003-04-14 17:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-14 17:31 YOSHIFUJI Hideaki / 吉藤英明 [this message]
2003-04-14 17:31 ` [PATCH] [NET] use fl6_{src,dst} etc David S. Miller
2003-04-14 17:52 ` YOSHIFUJI Hideaki / 吉藤英明
2003-04-14 17:48 ` David S. Miller
2003-04-15 2:58 ` YOSHIFUJI Hideaki / 吉藤英明
2003-04-16 17:49 ` David S. Miller
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=20030415.023158.36869337.yoshfuji@linux-ipv6.org \
--to=yoshfuji@linux-ipv6.org \
--cc=davem@redhat.com \
--cc=kuznet@ms2.inr.ac.ru \
--cc=netdev@oss.sgi.com \
--cc=usagi@linux-ipv6.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.