Skip to content

Commit

Permalink
Merge branch 'ipmr-cleanups'
Browse files Browse the repository at this point in the history
Nikolay Aleksandrov says:

====================
net: ipmr: cleanups and minor improvements

Since I'll have to work with ipmr, I decided to clean it up and do some
minor improvements. Functionally there're almost no changes except the
SLAB_PANIC removal. Most of the patches just re-design some functions to
be clearer and more concise and try to remove the ifdef web that was
inside. There's more information in each commit. This is the first set,
the end goal is to introduce complete netlink support and control over
the mfc and vif devices.
I've tried to test all of the setsockopt/getsockopt options, and also
made builds with various ipmr kconfig options turned on and off.

v2: change patch 7 to keep SLAB_PANIC and just drop the unnecessary null
check
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Nov 23, 2015
2 parents 930d314 + a0b4773 commit 901fb38
Show file tree
Hide file tree
Showing 2 changed files with 284 additions and 372 deletions.
59 changes: 17 additions & 42 deletions include/uapi/linux/mroute.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@
#include <linux/sockios.h>
#include <linux/types.h>

/*
* Based on the MROUTING 3.5 defines primarily to keep
* source compatibility with BSD.
/* Based on the MROUTING 3.5 defines primarily to keep
* source compatibility with BSD.
*
* See the mrouted code for the original history.
*
* Protocol Independent Multicast (PIM) data structures included
* Carlos Picoto (cap@di.fc.ul.pt)
* See the mrouted code for the original history.
*
* Protocol Independent Multicast (PIM) data structures included
* Carlos Picoto (cap@di.fc.ul.pt)
*/

#define MRT_BASE 200
Expand All @@ -34,27 +32,23 @@
#define SIOCGETSGCNT (SIOCPROTOPRIVATE+1)
#define SIOCGETRPF (SIOCPROTOPRIVATE+2)

#define MAXVIFS 32
#define MAXVIFS 32
typedef unsigned long vifbitmap_t; /* User mode code depends on this lot */
typedef unsigned short vifi_t;
#define ALL_VIFS ((vifi_t)(-1))

/*
* Same idea as select
*/

/* Same idea as select */

#define VIFM_SET(n,m) ((m)|=(1<<(n)))
#define VIFM_CLR(n,m) ((m)&=~(1<<(n)))
#define VIFM_ISSET(n,m) ((m)&(1<<(n)))
#define VIFM_CLRALL(m) ((m)=0)
#define VIFM_COPY(mfrom,mto) ((mto)=(mfrom))
#define VIFM_SAME(m1,m2) ((m1)==(m2))

/*
* Passed by mrouted for an MRT_ADD_VIF - again we use the
* mrouted 3.6 structures for compatibility
/* Passed by mrouted for an MRT_ADD_VIF - again we use the
* mrouted 3.6 structures for compatibility
*/

struct vifctl {
vifi_t vifc_vifi; /* Index of VIF */
unsigned char vifc_flags; /* VIFF_ flags */
Expand All @@ -73,10 +67,7 @@ struct vifctl {
#define VIFF_USE_IFINDEX 0x8 /* use vifc_lcl_ifindex instead of
vifc_lcl_addr to find an interface */

/*
* Cache manipulation structures for mrouted and PIMd
*/

/* Cache manipulation structures for mrouted and PIMd */
struct mfcctl {
struct in_addr mfcc_origin; /* Origin of mcast */
struct in_addr mfcc_mcastgrp; /* Group in question */
Expand All @@ -88,10 +79,7 @@ struct mfcctl {
int mfcc_expire;
};

/*
* Group count retrieval for mrouted
*/

/* Group count retrieval for mrouted */
struct sioc_sg_req {
struct in_addr src;
struct in_addr grp;
Expand All @@ -100,10 +88,7 @@ struct sioc_sg_req {
unsigned long wrong_if;
};

/*
* To get vif packet counts
*/

/* To get vif packet counts */
struct sioc_vif_req {
vifi_t vifi; /* Which iface */
unsigned long icount; /* In packets */
Expand All @@ -112,11 +97,9 @@ struct sioc_vif_req {
unsigned long obytes; /* Out bytes */
};

/*
* This is the format the mroute daemon expects to see IGMP control
* data. Magically happens to be like an IP packet as per the original
/* This is the format the mroute daemon expects to see IGMP control
* data. Magically happens to be like an IP packet as per the original
*/

struct igmpmsg {
__u32 unused1,unused2;
unsigned char im_msgtype; /* What is this */
Expand All @@ -126,21 +109,13 @@ struct igmpmsg {
struct in_addr im_src,im_dst;
};

/*
* That's all usermode folks
*/


/* That's all usermode folks */

#define MFC_ASSERT_THRESH (3*HZ) /* Maximal freq. of asserts */

/*
* Pseudo messages used by mrouted
*/

/* Pseudo messages used by mrouted */
#define IGMPMSG_NOCACHE 1 /* Kern cache fill request to mrouted */
#define IGMPMSG_WRONGVIF 2 /* For PIM assert processing (unused) */
#define IGMPMSG_WHOLEPKT 3 /* For PIM Register processing */


#endif /* _UAPI__LINUX_MROUTE_H */
Loading

0 comments on commit 901fb38

Please sign in to comment.