diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 33698ae..d52b453 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -125,7 +125,7 @@
 }
 
 static const char *oper_states[] = {
-	"UNKNOWN", "NOTPRESENT", "DOWN", "LOWERLAYERDOWN", 
+	"UNKNOWN", "NOTPRESENT", "DOWN", "LOWERLAYERDOWN",
 	"TESTING", "DORMANT",	 "UP"
 };
 
diff --git a/ip/ipaddrlabel.c b/ip/ipaddrlabel.c
index 8295727..5913b1b 100644
--- a/ip/ipaddrlabel.c
+++ b/ip/ipaddrlabel.c
@@ -133,7 +133,7 @@
 	inet_prefix prefix;
 	uint32_t label = 0xffffffffUL;
 	char *p = NULL;
-	char *l = NULL;        
+	char *l = NULL;
 
 	memset(&req, 0, sizeof(req));
 	memset(&prefix, 0, sizeof(prefix));
diff --git a/ip/iplink_vxlan.c b/ip/iplink_vxlan.c
index 9a8a9dc..b9a516e 100644
--- a/ip/iplink_vxlan.c
+++ b/ip/iplink_vxlan.c
@@ -198,7 +198,7 @@
 	if (!dst_port_set) {
 		fprintf(stderr, "vxlan: destination port not specified\n"
 			"Will use Linux kernel default (non-standard value)\n");
-		fprintf(stderr, 
+		fprintf(stderr,
 			"Use 'dstport 4789' to get the IANA assigned value\n"
 			"Use 'dstport 0' to get default and quiet this message\n");
 	}
diff --git a/ip/ipnetns.c b/ip/ipnetns.c
index 89dda3f..1d8d3dc 100644
--- a/ip/ipnetns.c
+++ b/ip/ipnetns.c
@@ -286,7 +286,7 @@
 	}
 	closedir(dir);
 	return 0;
-	
+
 }
 
 static int netns_identify(int argc, char **argv)
@@ -359,7 +359,7 @@
 	}
 	closedir(dir);
 	return 0;
-	
+
 }
 
 static int netns_delete(int argc, char **argv)
diff --git a/ip/iproute.c b/ip/iproute.c
index 25a56d1..6d13b64 100644
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -837,7 +837,7 @@
 			}
 			if (get_time_rtt(&rtt, *argv, &raw))
 				invarg("\"rtt\" value is invalid\n", *argv);
-			rta_addattr32(mxrta, sizeof(mxbuf), RTAX_RTT, 
+			rta_addattr32(mxrta, sizeof(mxbuf), RTAX_RTT,
 				(raw) ? rtt : rtt * 8);
 		} else if (strcmp(*argv, "rto_min") == 0) {
 			unsigned rto_min;
diff --git a/ip/iptunnel.c b/ip/iptunnel.c
index 8479c72..9ae8847 100644
--- a/ip/iptunnel.c
+++ b/ip/iptunnel.c
@@ -345,16 +345,16 @@
 	if (p->iph.protocol == IPPROTO_IPV6 && (p->i_flags & SIT_ISATAP)) {
 		struct ip_tunnel_prl prl[16];
 		int i;
-		
+
 		memset(prl, 0, sizeof(prl));
 		prl[0].datalen = sizeof(prl) - sizeof(prl[0]);
 		prl[0].addr = htonl(INADDR_ANY);
-	
+
 		if (!tnl_prl_ioctl(SIOCGETPRL, p->name, prl))
 			for (i = 1; i < sizeof(prl) / sizeof(prl[0]); i++)
 		{
 			if (prl[i].addr != htonl(INADDR_ANY)) {
-				printf(" %s %s ", 
+				printf(" %s %s ",
 					(prl[i].flags & PRL_DEFAULT) ? "pdr" : "pr",
 					format_host(AF_INET, 4, &prl[i].addr, s1, sizeof(s1)));
 			}
diff --git a/ip/ipxfrm.c b/ip/ipxfrm.c
index 2ebfd38..cce5151 100644
--- a/ip/ipxfrm.c
+++ b/ip/ipxfrm.c
@@ -357,7 +357,7 @@
 
 	if (prefix)
 		fputs(prefix, fp);
-	fprintf(fp, "  replay-window %u replay %u failed %u%s", 
+	fprintf(fp, "  replay-window %u replay %u failed %u%s",
 		s->replay_window, s->replay, s->integrity_failed, _SL_);
 }
 
@@ -408,7 +408,7 @@
 
 		if (prefix)
 			fputs(prefix, fp);
-		fprintf(fp, "  expire add: soft %llu(sec), hard %llu(sec)%s", 
+		fprintf(fp, "  expire add: soft %llu(sec), hard %llu(sec)%s",
 			(unsigned long long) cfg->soft_add_expires_seconds,
 			(unsigned long long) cfg->hard_add_expires_seconds,
 			_SL_);
diff --git a/ip/link_gre.c b/ip/link_gre.c
index 7e0b896..1747886 100644
--- a/ip/link_gre.c
+++ b/ip/link_gre.c
@@ -233,7 +233,7 @@
 				tos = uval;
 			} else
 				tos = 1;
-		} else 
+		} else
 			usage();
 		argc--; argv++;
 	}
diff --git a/ip/tunnel.c b/ip/tunnel.c
index 2f1ec30..f163dad 100644
--- a/ip/tunnel.c
+++ b/ip/tunnel.c
@@ -121,7 +121,7 @@
 	return err;
 }
 
-static int tnl_gen_ioctl(int cmd, const char *name, 
+static int tnl_gen_ioctl(int cmd, const char *name,
 			 void *p, int skiperr)
 {
 	struct ifreq ifr;
diff --git a/ip/xfrm_state.c b/ip/xfrm_state.c
index 14f2fa7..3d8606b 100644
--- a/ip/xfrm_state.c
+++ b/ip/xfrm_state.c
@@ -1188,7 +1188,7 @@
 				fprintf(fp,"BAD SAD length returned\n");
 				return -1;
 			}
-				
+
 			si = RTA_DATA(tb[XFRMA_SAD_HINFO]);
 			fprintf(fp," (buckets ");
 			fprintf(fp,"count %d", si->sadhcnt);
