From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: linux-kernel@vger.kernel.org, linux-embedded@vger.kernel.org
Cc: michael@free-electrons.com,
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
Matt Mackall <mpm@selenic.com>,
netdev@vger.kernel.org, davem@davemloft.net,
akpm@linux-foundation.org
Subject: [patch 4/4] Configure out IGMP support
Date: Thu, 31 Jul 2008 11:27:07 +0200 [thread overview]
Message-ID: <20080731093221.565015353@free-electrons.com> (raw)
In-Reply-To: 20080731092703.661994657@free-electrons.com
[-- Attachment #1: configure-out-igmp-support --]
[-- Type: text/plain, Size: 5718 bytes --]
This patchs adds the CONFIG_IGMP option which allows to remove support
for the Internet Group Management Protocol, used in
multicast. Multicast is not necessarly used by applications,
particularly on embedded devices. As this is a size-reduction option,
it depends on CONFIG_EMBEDDED. It allows to save ~10 kilobytes of
kernel code/data:
text data bss dec hex filename
1718857 143672 221184 2083713 1fcb81 vmlinux
1708838 143640 221184 2073662 1fa43e vmlinux.new
-10019 -32 0 -10051 -2743 +/-
This patch has been originally written by Matt Mackall
<mpm@selenic.com>, and is part of the Linux Tiny project.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Matt Mackall <mpm@selenic.com>
Cc: netdev@vger.kernel.org
Cc: davem@davemloft.net
Cc: mpm@selenic.com
Cc: akpm@linux-foundation.org
---
include/linux/igmp.h | 20 ++++++++++++++++++++
init/Kconfig | 8 ++++++++
net/ipv4/Makefile | 3 ++-
net/ipv4/af_inet.c | 2 --
net/ipv4/ip_sockglue.c | 4 ++++
net/ipv4/sysctl_net_ipv4.c | 2 ++
6 files changed, 36 insertions(+), 3 deletions(-)
Index: linuxdev/include/linux/igmp.h
===================================================================
--- linuxdev.orig/include/linux/igmp.h
+++ linuxdev/include/linux/igmp.h
@@ -215,6 +215,7 @@
#define IGMPV3_QQIC(value) IGMPV3_EXP(0x80, 4, 3, value)
#define IGMPV3_MRC(value) IGMPV3_EXP(0x80, 4, 3, value)
+#ifdef CONFIG_IGMP
extern int ip_check_mc(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u16 proto);
extern int igmp_rcv(struct sk_buff *);
extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr);
@@ -235,6 +236,25 @@
extern void ip_mc_dec_group(struct in_device *in_dev, __be32 addr);
extern void ip_mc_inc_group(struct in_device *in_dev, __be32 addr);
extern void ip_mc_rejoin_group(struct ip_mc_list *im);
+#else /* !CONFIG_IGMP */
+#define ip_check_mc(a, b, c, d) (0)
+#define igmp_rcv(a) (0)
+#define ip_mc_join_group(a, b) (0)
+#define ip_mc_leave_group(a, b) (0)
+#define ip_mc_drop_socket(a)
+#define ip_mc_source(a, b, c, d, e) (0)
+#define ip_mc_msfilter(a, b, c) (0)
+#define ip_mc_msfget(a, b, c, d) (0)
+#define ip_mc_gsfget(a, b, c, d) (0)
+#define ip_mc_sf_allow(a, b, c, d) (0)
+#define ip_mc_init_dev(a)
+#define ip_mc_destroy_dev(a)
+#define ip_mc_up(a)
+#define ip_mc_down(a)
+#define ip_mc_dec_group(a)
+#define ip_mc_inc_group(a)
+#define ip_mc_rejoin_group(a)
+#endif /* CONFIG_IGMP */
#endif
#endif
Index: linuxdev/init/Kconfig
===================================================================
--- linuxdev.orig/init/Kconfig
+++ linuxdev/init/Kconfig
@@ -748,6 +748,14 @@
Disabling this option removes support for configuring
ethernet device features via ethtool. Saves about 6k.
+config IGMP
+ depends on INET
+ bool "Enable IGMP support" if EMBEDDED && !IP_MULTICAST
+ default y
+ help
+ Disabling this option removes support for the Internet group
+ management protocol, used for multicast. Saves about 10k.
+
config VM_EVENT_COUNTERS
default y
bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
Index: linuxdev/net/ipv4/Makefile
===================================================================
--- linuxdev.orig/net/ipv4/Makefile
+++ linuxdev/net/ipv4/Makefile
@@ -9,13 +9,14 @@
tcp.o tcp_input.o tcp_output.o tcp_timer.o tcp_ipv4.o \
tcp_minisocks.o tcp_cong.o \
datagram.o raw.o udp.o udplite.o \
- arp.o icmp.o devinet.o af_inet.o igmp.o \
+ arp.o icmp.o devinet.o af_inet.o \
fib_frontend.o fib_semantics.o \
inet_fragment.o
obj-$(CONFIG_SYSCTL) += sysctl_net_ipv4.o
obj-$(CONFIG_IP_FIB_HASH) += fib_hash.o
obj-$(CONFIG_IP_FIB_TRIE) += fib_trie.o
+obj-$(CONFIG_IGMP) += igmp.o
obj-$(CONFIG_PROC_FS) += proc.o
obj-$(CONFIG_IP_MULTIPLE_TABLES) += fib_rules.o
obj-$(CONFIG_IP_MROUTE) += ipmr.o
Index: linuxdev/net/ipv4/af_inet.c
===================================================================
--- linuxdev.orig/net/ipv4/af_inet.c
+++ linuxdev/net/ipv4/af_inet.c
@@ -115,8 +115,6 @@
#include <linux/mroute.h>
#endif
-extern void ip_mc_drop_socket(struct sock *sk);
-
/* The inetsw table contains everything that inet_create needs to
* build a new socket.
*/
Index: linuxdev/net/ipv4/ip_sockglue.c
===================================================================
--- linuxdev.orig/net/ipv4/ip_sockglue.c
+++ linuxdev/net/ipv4/ip_sockglue.c
@@ -640,6 +640,7 @@
err = ip_mc_leave_group(sk, &mreq);
break;
}
+#ifdef CONFIG_IGMP
case IP_MSFILTER:
{
extern int sysctl_igmp_max_msf;
@@ -677,6 +678,7 @@
kfree(msf);
break;
}
+#endif
case IP_BLOCK_SOURCE:
case IP_UNBLOCK_SOURCE:
case IP_ADD_SOURCE_MEMBERSHIP:
@@ -794,6 +796,7 @@
greqs.gsr_interface);
break;
}
+#ifdef CONFIG_IGMP
case MCAST_MSFILTER:
{
extern int sysctl_igmp_max_msf;
@@ -860,6 +863,7 @@
kfree(gsf);
break;
}
+#endif
case IP_ROUTER_ALERT:
err = ip_ra_control(sk, val ? 1 : 0, NULL);
break;
Index: linuxdev/net/ipv4/sysctl_net_ipv4.c
===================================================================
--- linuxdev.orig/net/ipv4/sysctl_net_ipv4.c
+++ linuxdev/net/ipv4/sysctl_net_ipv4.c
@@ -412,6 +412,7 @@
},
#endif
+#ifdef CONFIG_IGMP
{
.ctl_name = NET_IPV4_IGMP_MAX_MSF,
.procname = "igmp_max_msf",
@@ -420,6 +421,7 @@
.mode = 0644,
.proc_handler = &proc_dointvec
},
+#endif
{
.ctl_name = NET_IPV4_INET_PEER_THRESHOLD,
.procname = "inet_peer_threshold",
--
Thomas Petazzoni, Free Electrons
Kernel, drivers and embedded Linux development,
consulting, training and support.
http://free-electrons.com
next prev parent reply other threads:[~2008-07-31 9:27 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-31 9:27 [patch 0/4] [resend] Add configuration options to disable features not needed on embedded devices Thomas Petazzoni
2008-07-31 9:27 ` [patch 1/4] Configure out AIO support Thomas Petazzoni
2008-07-31 10:09 ` Bernhard Fischer
2008-07-31 10:12 ` Adrian Bunk
2008-07-31 22:42 ` Bernhard Fischer
2008-07-31 22:42 ` Bernhard Fischer
2008-08-05 18:15 ` Adrian Bunk
2008-08-05 18:26 ` Jamie Lokier
2008-08-05 18:36 ` Bernhard Fischer
2008-07-31 9:27 ` [patch 2/4] Configure out file locking features Thomas Petazzoni
2008-07-31 13:53 ` Adrian Bunk
2008-07-31 14:20 ` Thomas Petazzoni
2008-07-31 14:20 ` Thomas Petazzoni
2008-07-31 14:20 ` Thomas Petazzoni
2008-07-31 15:37 ` Adrian Bunk
2008-07-31 15:37 ` Adrian Bunk
2008-07-31 16:26 ` Thomas Petazzoni
2008-07-31 16:26 ` Thomas Petazzoni
2008-07-31 16:26 ` Thomas Petazzoni
2008-07-31 16:49 ` Adrian Bunk
2008-07-31 16:49 ` Adrian Bunk
2008-07-31 16:49 ` Adrian Bunk
2008-07-31 16:57 ` David Woodhouse
2008-07-31 16:57 ` David Woodhouse
2008-07-31 17:32 ` Tim Bird
2008-07-31 18:12 ` Robert Schwebel
2008-07-31 19:31 ` Adrian Bunk
2008-08-01 7:28 ` Robert Schwebel
2008-07-31 19:16 ` Adrian Bunk
2008-07-31 20:37 ` Tim Bird
2008-08-02 16:38 ` J. Bruce Fields
2008-08-04 13:52 ` Thomas Petazzoni
2008-08-04 13:52 ` Thomas Petazzoni
2008-08-04 18:16 ` J. Bruce Fields
2008-08-04 18:16 ` J. Bruce Fields
2008-08-04 18:16 ` J. Bruce Fields
2008-08-04 18:24 ` Tim Bird
2008-08-04 18:24 ` Tim Bird
2008-08-04 18:24 ` Tim Bird
2008-08-04 18:25 ` J. Bruce Fields
2008-08-04 18:25 ` J. Bruce Fields
2008-08-04 18:25 ` J. Bruce Fields
2008-08-04 18:54 ` Matt Mackall
2008-08-04 18:54 ` Matt Mackall
2008-08-04 19:42 ` J. Bruce Fields
2008-08-04 19:42 ` J. Bruce Fields
2008-08-04 19:42 ` J. Bruce Fields
2008-08-04 22:32 ` Tim Bird
2008-08-04 22:32 ` Tim Bird
2008-08-06 13:12 ` Thomas Petazzoni
2008-08-06 13:12 ` Thomas Petazzoni
2008-08-07 22:55 ` J. Bruce Fields
2008-08-07 22:55 ` J. Bruce Fields
2008-07-31 9:27 ` [patch 3/4] Configure out ethtool support Thomas Petazzoni
2008-07-31 10:40 ` Ben Hutchings
2008-07-31 10:49 ` David Miller
2008-07-31 10:54 ` David Woodhouse
2008-07-31 10:57 ` David Miller
2008-07-31 10:42 ` David Woodhouse
2008-07-31 10:51 ` David Miller
2008-07-31 11:29 ` David Woodhouse
2008-07-31 11:33 ` David Miller
2008-07-31 11:46 ` David Woodhouse
2008-07-31 11:50 ` David Miller
2008-07-31 15:58 ` Adrian Bunk
2008-07-31 16:35 ` Thomas Petazzoni
2008-07-31 16:35 ` Thomas Petazzoni
2008-07-31 9:27 ` Thomas Petazzoni [this message]
2008-08-01 19:41 ` [patch 4/4] Configure out IGMP support David Woodhouse
2008-08-04 12:48 ` Thomas Petazzoni
2008-08-04 12:48 ` Thomas Petazzoni
2008-08-04 12:53 ` Adrian Bunk
2008-08-04 12:53 ` Adrian Bunk
2008-08-04 13:53 ` David Woodhouse
2008-08-04 13:53 ` David Woodhouse
2008-07-31 9:40 ` [patch 0/4] [resend] Add configuration options to disable features not needed on embedded devices David Miller
2008-07-31 9:51 ` David Woodhouse
2008-07-31 9:55 ` David Miller
2008-07-31 9:59 ` David Woodhouse
2008-07-31 10:02 ` David Miller
2008-07-31 10:15 ` David Woodhouse
2008-07-31 10:25 ` David Miller
2008-07-31 17:59 ` Tim Bird
2008-07-31 18:50 ` [patch 0/4] [resend] Add configuration options to disable features Ulrich Teichert
2008-07-31 18:50 ` Ulrich Teichert
2008-07-31 19:46 ` Josh Boyer
2008-07-31 19:55 ` David Woodhouse
2008-08-01 7:17 ` Robert Schwebel
2008-08-01 19:15 ` Linus Torvalds
2008-08-01 19:47 ` David Woodhouse
2008-07-31 16:42 ` [patch 0/4] [resend] Add configuration options to disable features not needed on embedded devices Tim Bird
2008-07-31 17:20 ` Tim Bird
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=20080731093221.565015353@free-electrons.com \
--to=thomas.petazzoni@free-electrons.com \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=linux-embedded@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael@free-electrons.com \
--cc=mpm@selenic.com \
--cc=netdev@vger.kernel.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.