Re: [iproute PATCH v2 7/7] ip/tcp_metrics: Simplify process_msg a bit
From: Phil Sutter <phil@nwl.cc>
Date: 2016-06-22 13:08:59
Hi David, On Wed, Jun 22, 2016 at 01:00:08PM +0000, David Laight wrote:
From: Jakub Sitnickiquoted
Sent: 22 June 2016 12:34...quoted
quoted
- a = attrs[TCP_METRICS_ATTR_ADDR_IPV4]; - if (a) { + if ((a = attrs[TCP_METRICS_ATTR_ADDR_IPV4])) {Copy the pointer inside the branch? Same gain on indentation while keeping checkpatch happy.Or as below (hacked from the mails): a = attrs[TCP_METRICS_ATTR_ADDR_IPV4]; if (a) { if (f.daddr.family && f.daddr.family != AF_INET) return 0; memcpy(&daddr.data, RTA_DATA(a), 4); daddr.bytelen = 4; family = AF_INET; atype = TCP_METRICS_ATTR_ADDR_IPV4; dlen = RTA_PAYLOAD(a); } else { a = attrs[TCP_METRICS_ATTR_ADDR_IPV6]; if (!a) return 0; memcpy(&daddr.data, RTA_DATA(a), 16); daddr.bytelen = 16; family = AF_INET6; atype = TCP_METRICS_ATTR_ADDR_IPV6; dlen = RTA_PAYLOAD(a); }
Yes, this should work as well and require less code changes overall.
Though I think it's less readable:
| if (a) {
| do a;
| else {
| if (!b)
| return;
| do b;
| }
vs.
| if (a) {
| do a;
| } else if (b) {
| do b;
| } else {
| return;
| }
Don't you think?
Thanks, Phil