* [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions [not found] <e2ebcbf24539c0a3ef2ac77147dbfa55d8ac9e33.1197432867.git.joe@perches.com> @ 2007-12-13 23:38 ` Joe Perches [not found] ` <1197589141-7020-2-git-send-email-joe@perches.com> ` (2 more replies) [not found] ` <885ea24008e2b1c07e6bff0344f260a0ff104a35.1197432867.git.joe@perches.com> 1 sibling, 3 replies; 11+ messages in thread From: Joe Perches @ 2007-12-13 23:38 UTC (permalink / raw) To: netdev; +Cc: linux-kernel Change IPV4 specific macros LOOPBACK MULTICAST LOCAL_MCAST BADCLASS and ZERONET macros to inline functions ipv4_is_<type>(__be32 addr) Adds type safety and arguably some readability. Changes since last submission: Removed ipv4_addr_octets function Used hex constants Converted recently added rfc3330 macros Signed-off-by: Joe Perches <joe@perches.com> --- include/linux/in.h | 87 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 74 insertions(+), 13 deletions(-) diff --git a/include/linux/in.h b/include/linux/in.h index a8f00ca..f8d6073 100644 --- a/include/linux/in.h +++ b/include/linux/in.h @@ -246,21 +246,82 @@ struct sockaddr_in { #include <asm/byteorder.h> #ifdef __KERNEL__ -/* Some random defines to make it easier in the kernel.. */ -#define LOOPBACK(x) (((x) & htonl(0xff000000)) == htonl(0x7f000000)) -#define MULTICAST(x) (((x) & htonl(0xf0000000)) == htonl(0xe0000000)) -#define BADCLASS(x) (((x) & htonl(0xf0000000)) == htonl(0xf0000000)) -#define ZERONET(x) (((x) & htonl(0xff000000)) == htonl(0x00000000)) -#define LOCAL_MCAST(x) (((x) & htonl(0xFFFFFF00)) == htonl(0xE0000000)) + +static inline bool ipv4_is_loopback(__be32 addr) +{ + return (addr & htonl(0xff000000)) == htonl(0x7f000000); +} + +static inline bool ipv4_is_multicast(__be32 addr) +{ + return (addr & htonl(0xf0000000)) == htonl(0xe0000000); +} + +static inline bool ipv4_is_local_multicast(__be32 addr) +{ + return (addr & htonl(0xffffff00)) == htonl(0xe0000000); +} + +static inline bool ipv4_is_badclass(__be32 addr) +{ + return (addr & htonl(0xf0000000)) == htonl(0xf0000000); +} + +static inline bool ipv4_is_zeronet(__be32 addr) +{ + return (addr & htonl(0xff000000)) == htonl(0x00000000); +} + +#define LOOPBACK(x) ipv4_is_loopback(x) +#define MULTICAST(x) ipv4_is_multicast(x) +#define BADCLASS(x) ipv4_is_badclass(x) +#define ZERONET(x) ipv4_is_zeronet(x) +#define LOCAL_MCAST(x) ipv4_is_local_multicast(x) /* Special-Use IPv4 Addresses (RFC3330) */ -#define PRIVATE_10(x) (((x) & htonl(0xff000000)) == htonl(0x0A000000)) -#define LINKLOCAL_169(x) (((x) & htonl(0xffff0000)) == htonl(0xA9FE0000)) -#define PRIVATE_172(x) (((x) & htonl(0xfff00000)) == htonl(0xAC100000)) -#define TEST_192(x) (((x) & htonl(0xffffff00)) == htonl(0xC0000200)) -#define ANYCAST_6TO4(x) (((x) & htonl(0xffffff00)) == htonl(0xC0586300)) -#define PRIVATE_192(x) (((x) & htonl(0xffff0000)) == htonl(0xC0A80000)) -#define TEST_198(x) (((x) & htonl(0xfffe0000)) == htonl(0xC6120000)) + +static inline bool ipv4_is_private_10(__be32 addr) +{ + return (addr & htonl(0xff000000)) == htonl(0x0a000000); +} + +static inline bool ipv4_is_private_172(__be32 addr) +{ + return (addr & htonl(0xfff00000)) == htonl(0xac100000); +} + +static inline bool ipv4_is_private_192(__be32 addr) +{ + return (addr & htonl(0xffff0000)) == htonl(0xc0a80000); +} + +static inline bool ipv4_is_linklocal_169(__be32 addr) +{ + return (addr & htonl(0xffff0000)) == htonl(0xa9fe0000); +} + +static inline bool ipv4_is_anycast_6to4(__be32 addr) +{ + return (addr & htonl(0xffffff00)) == htonl(0xc0586300); +} + +static inline bool ipv4_is_test_192(__be32 addr) +{ + return (addr & htonl(0xffffff00)) == htonl(0xc0000200); +} + +static inline bool ipv4_is_test_198(__be32 addr) +{ + return (addr & htonl(0xfffe0000)) == htonl(0xc6120000); +} #endif +#define PRIVATE_10(x) ipv4_is_private_10(x) +#define LINKLOCAL_169(x) ipv4_is_linklocal_169(x) +#define PRIVATE_172(x) ipv4_is_private_172(x) +#define TEST_192(x) ipv4_is_test_192(x) +#define ANYCAST_6TO4(x) ipv4_is_anycast_6to4(x) +#define PRIVATE_192(x) ipv4_is_private_192(x) +#define TEST_198(x) ipv4_is_test_198(x) + #endif /* _LINUX_IN_H */ -- 1.5.3.7.949.g2221a6 ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <1197589141-7020-2-git-send-email-joe@perches.com>]
[parent not found: <1197589141-7020-3-git-send-email-joe@perches.com>]
[parent not found: <1197589141-7020-4-git-send-email-joe@perches.com>]
[parent not found: <1197589141-7020-5-git-send-email-joe@perches.com>]
[parent not found: <1197589141-7020-6-git-send-email-joe@perches.com>]
* Re: [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions 2007-12-13 23:38 ` [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions Joe Perches [not found] ` <1197589141-7020-2-git-send-email-joe@perches.com> @ 2007-12-16 21:42 ` David Miller 2007-12-17 22:37 ` Jan Engelhardt 2 siblings, 0 replies; 11+ messages in thread From: David Miller @ 2007-12-16 21:42 UTC (permalink / raw) To: joe; +Cc: netdev, linux-kernel From: Joe Perches <joe@perches.com> Date: Thu, 13 Dec 2007 15:38:54 -0800 > Change IPV4 specific macros LOOPBACK MULTICAST LOCAL_MCAST BADCLASS and ZERONET > macros to inline functions ipv4_is_<type>(__be32 addr) > > Adds type safety and arguably some readability. > > Changes since last submission: > > Removed ipv4_addr_octets function > Used hex constants > Converted recently added rfc3330 macros > > Signed-off-by: Joe Perches <joe@perches.com> Applied. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions 2007-12-13 23:38 ` [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions Joe Perches [not found] ` <1197589141-7020-2-git-send-email-joe@perches.com> 2007-12-16 21:42 ` David Miller @ 2007-12-17 22:37 ` Jan Engelhardt 2007-12-17 22:41 ` David Miller ` (2 more replies) 2 siblings, 3 replies; 11+ messages in thread From: Jan Engelhardt @ 2007-12-17 22:37 UTC (permalink / raw) To: Joe Perches; +Cc: netdev, Linux Kernel Mailing List, David Miller On Dec 13 2007 15:38, Joe Perches wrote: > >Change IPV4 specific macros LOOPBACK MULTICAST LOCAL_MCAST BADCLASS and ZERONET >macros to inline functions ipv4_is_<type>(__be32 addr) > >Adds type safety and arguably some readability. > >Changes since last submission: > >Removed ipv4_addr_octets function >Used hex constants >Converted recently added rfc3330 macros > >Signed-off-by: Joe Perches <joe@perches.com> >--- >+static inline bool ipv4_is_loopback(__be32 addr) >+{ >+ return (addr & htonl(0xff000000)) == htonl(0x7f000000); >+} >+ Can we use __constant_htonl()? >+static inline bool ipv4_is_private_10(__be32 addr) >+{ >+ return (addr & htonl(0xff000000)) == htonl(0x0a000000); >+} What are these functions needed for, even? There does not seem to be any code (at least in davem's net-2.6.25:net/ipv4/, where I dared to grep) that uses them. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions 2007-12-17 22:37 ` Jan Engelhardt @ 2007-12-17 22:41 ` David Miller 2007-12-17 22:42 ` Joe Perches 2007-12-17 22:43 ` David Miller 2 siblings, 0 replies; 11+ messages in thread From: David Miller @ 2007-12-17 22:41 UTC (permalink / raw) To: jengelh; +Cc: joe, netdev, linux-kernel From: Jan Engelhardt <jengelh@computergmbh.de> Date: Mon, 17 Dec 2007 23:37:24 +0100 (CET) > Can we use __constant_htonl()? That should only be used in initializers. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions 2007-12-17 22:37 ` Jan Engelhardt 2007-12-17 22:41 ` David Miller @ 2007-12-17 22:42 ` Joe Perches 2007-12-17 22:43 ` David Miller 2 siblings, 0 replies; 11+ messages in thread From: Joe Perches @ 2007-12-17 22:42 UTC (permalink / raw) To: Jan Engelhardt; +Cc: netdev, Linux Kernel Mailing List, David Miller On Mon, 2007-12-17 at 23:37 +0100, Jan Engelhardt wrote: > >+static inline bool ipv4_is_loopback(__be32 addr) > >+{ > >+ return (addr & htonl(0xff000000)) == htonl(0x7f000000); > >+} > >+ > Can we use __constant_htonl()? I believe the generated code is the same. > >+static inline bool ipv4_is_private_10(__be32 addr) > >+{ > >+ return (addr & htonl(0xff000000)) == htonl(0x0a000000); > >+} > > What are these functions needed for, even? There does not seem to be > any code (at least in davem's net-2.6.25:net/ipv4/, where I dared to grep) > that uses them. include/net/addrconf.h net/sctp/protocol.c cheers, Joe ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions 2007-12-17 22:37 ` Jan Engelhardt 2007-12-17 22:41 ` David Miller 2007-12-17 22:42 ` Joe Perches @ 2007-12-17 22:43 ` David Miller 2007-12-17 23:02 ` Jan Engelhardt 2 siblings, 1 reply; 11+ messages in thread From: David Miller @ 2007-12-17 22:43 UTC (permalink / raw) To: jengelh; +Cc: joe, netdev, linux-kernel From: Jan Engelhardt <jengelh@computergmbh.de> Date: Mon, 17 Dec 2007 23:37:24 +0100 (CET) > > On Dec 13 2007 15:38, Joe Perches wrote: > >+static inline bool ipv4_is_private_10(__be32 addr) > >+{ > >+ return (addr & htonl(0xff000000)) == htonl(0x0a000000); > >+} > > What are these functions needed for, even? There does not seem to be > any code (at least in davem's net-2.6.25:net/ipv4/, where I dared to grep) > that uses them. You really need to grep the whole tree, never ever decrease the scope of directories to search if you want to see if an interface is used. It's used by some ipv6 address translation code as well as some bits in SCTP: include/net/addrconf.h: eui[0] = (ipv4_is_zeronet(addr) || ipv4_is_private_10(addr) || net/sctp/protocol.c: } else if (ipv4_is_private_10(addr->v4.sin_addr.s_addr) || So lazy... ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions 2007-12-17 22:43 ` David Miller @ 2007-12-17 23:02 ` Jan Engelhardt 0 siblings, 0 replies; 11+ messages in thread From: Jan Engelhardt @ 2007-12-17 23:02 UTC (permalink / raw) To: David Miller; +Cc: joe, netdev, linux-kernel On Dec 17 2007 14:43, David Miller wrote: >> On Dec 13 2007 15:38, Joe Perches wrote: >> >+static inline bool ipv4_is_private_10(__be32 addr) >> >+{ >> >+ return (addr & htonl(0xff000000)) == htonl(0x0a000000); >> >+} >> >> What are these functions needed for, even? There does not seem to be >> any code (at least in davem's net-2.6.25:net/ipv4/, where I dared to grep) >> that uses them. > >You really need to grep the whole tree, never ever decrease the scope >of directories to search if you want to see if an interface is used. > Hah you got me there :) >It's used by some ipv6 address translation code as well as some >bits in SCTP: > >include/net/addrconf.h: eui[0] = (ipv4_is_zeronet(addr) || ipv4_is_private_10(addr) || >net/sctp/protocol.c: } else if (ipv4_is_private_10(addr->v4.sin_addr.s_addr) || > >So lazy... I just discovered git-grep... ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <885ea24008e2b1c07e6bff0344f260a0ff104a35.1197432867.git.joe@perches.com>]
* [PATCH net-2.6.25 8/8] Remove unused IPV4TYPE macros [not found] ` <885ea24008e2b1c07e6bff0344f260a0ff104a35.1197432867.git.joe@perches.com> @ 2007-12-13 23:39 ` Joe Perches 2007-12-16 21:48 ` David Miller 0 siblings, 1 reply; 11+ messages in thread From: Joe Perches @ 2007-12-13 23:39 UTC (permalink / raw) To: netdev; +Cc: linux-kernel Signed-off-by: Joe Perches <joe@perches.com> --- include/linux/in.h | 14 -------------- 1 files changed, 0 insertions(+), 14 deletions(-) diff --git a/include/linux/in.h b/include/linux/in.h index f8d6073..27d8a5a 100644 --- a/include/linux/in.h +++ b/include/linux/in.h @@ -272,12 +272,6 @@ static inline bool ipv4_is_zeronet(__be32 addr) return (addr & htonl(0xff000000)) == htonl(0x00000000); } -#define LOOPBACK(x) ipv4_is_loopback(x) -#define MULTICAST(x) ipv4_is_multicast(x) -#define BADCLASS(x) ipv4_is_badclass(x) -#define ZERONET(x) ipv4_is_zeronet(x) -#define LOCAL_MCAST(x) ipv4_is_local_multicast(x) - /* Special-Use IPv4 Addresses (RFC3330) */ static inline bool ipv4_is_private_10(__be32 addr) @@ -316,12 +310,4 @@ static inline bool ipv4_is_test_198(__be32 addr) } #endif -#define PRIVATE_10(x) ipv4_is_private_10(x) -#define LINKLOCAL_169(x) ipv4_is_linklocal_169(x) -#define PRIVATE_172(x) ipv4_is_private_172(x) -#define TEST_192(x) ipv4_is_test_192(x) -#define ANYCAST_6TO4(x) ipv4_is_anycast_6to4(x) -#define PRIVATE_192(x) ipv4_is_private_192(x) -#define TEST_198(x) ipv4_is_test_198(x) - #endif /* _LINUX_IN_H */ -- 1.5.3.7.949.g2221a6 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-2.6.25 8/8] Remove unused IPV4TYPE macros 2007-12-13 23:39 ` [PATCH net-2.6.25 8/8] Remove unused IPV4TYPE macros Joe Perches @ 2007-12-16 21:48 ` David Miller 2007-12-17 4:01 ` Joe Perches 0 siblings, 1 reply; 11+ messages in thread From: David Miller @ 2007-12-16 21:48 UTC (permalink / raw) To: joe; +Cc: netdev, linux-kernel From: Joe Perches <joe@perches.com> Date: Thu, 13 Dec 2007 15:39:01 -0800 > Signed-off-by: Joe Perches <joe@perches.com> Applied, thanks for doing this work Joe. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-2.6.25 8/8] Remove unused IPV4TYPE macros 2007-12-16 21:48 ` David Miller @ 2007-12-17 4:01 ` Joe Perches 2007-12-17 4:28 ` David Miller 0 siblings, 1 reply; 11+ messages in thread From: Joe Perches @ 2007-12-17 4:01 UTC (permalink / raw) To: David Miller; +Cc: netdev, linux-kernel On Sun, 2007-12-16 at 13:48 -0800, David Miller wrote: > From: Joe Perches <joe@perches.com> > Date: Thu, 13 Dec 2007 15:39:01 -0800 > > Signed-off-by: Joe Perches <joe@perches.com> > Applied, thanks for doing this work Joe. I broke the parisc build. Bad Joe... Here's the patch: Signed-off-by: Joe Perches <joe@perches.com> diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index a6d6b24..703b85e 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c @@ -364,7 +364,7 @@ static __inline__ int led_get_net_activity(void) struct in_device *in_dev = __in_dev_get_rcu(dev); if (!in_dev || !in_dev->ifa_list) continue; - if (LOOPBACK(in_dev->ifa_list->ifa_local)) + if (ipv4_is_loopback(in_dev->ifa_list->ifa_local)) continue; stats = dev->get_stats(dev); rx_total += stats->rx_packets; ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-2.6.25 8/8] Remove unused IPV4TYPE macros 2007-12-17 4:01 ` Joe Perches @ 2007-12-17 4:28 ` David Miller 0 siblings, 0 replies; 11+ messages in thread From: David Miller @ 2007-12-17 4:28 UTC (permalink / raw) To: joe; +Cc: netdev, linux-kernel From: Joe Perches <joe@perches.com> Date: Sun, 16 Dec 2007 20:01:06 -0800 > On Sun, 2007-12-16 at 13:48 -0800, David Miller wrote: > > From: Joe Perches <joe@perches.com> > > Date: Thu, 13 Dec 2007 15:39:01 -0800 > > > Signed-off-by: Joe Perches <joe@perches.com> > > Applied, thanks for doing this work Joe. > > I broke the parisc build. Bad Joe... > > Here's the patch: > > Signed-off-by: Joe Perches <joe@perches.com> Applied, thanks. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2007-12-17 23:03 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <e2ebcbf24539c0a3ef2ac77147dbfa55d8ac9e33.1197432867.git.joe@perches.com>
2007-12-13 23:38 ` [PATCH net-2.6.25 1/8] Create ipv4_is_<type>(__be32 addr) functions Joe Perches
[not found] ` <1197589141-7020-2-git-send-email-joe@perches.com>
[not found] ` <1197589141-7020-3-git-send-email-joe@perches.com>
[not found] ` <1197589141-7020-4-git-send-email-joe@perches.com>
[not found] ` <1197589141-7020-5-git-send-email-joe@perches.com>
[not found] ` <1197589141-7020-6-git-send-email-joe@perches.com>
2007-12-16 21:42 ` David Miller
2007-12-17 22:37 ` Jan Engelhardt
2007-12-17 22:41 ` David Miller
2007-12-17 22:42 ` Joe Perches
2007-12-17 22:43 ` David Miller
2007-12-17 23:02 ` Jan Engelhardt
[not found] ` <885ea24008e2b1c07e6bff0344f260a0ff104a35.1197432867.git.joe@perches.com>
2007-12-13 23:39 ` [PATCH net-2.6.25 8/8] Remove unused IPV4TYPE macros Joe Perches
2007-12-16 21:48 ` David Miller
2007-12-17 4:01 ` Joe Perches
2007-12-17 4:28 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®