-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 203974 b: refs/heads/master c: e8648a1 h: refs/heads/master v: v3
- Loading branch information
Eric Dumazet
authored and
Patrick McHardy
committed
Jul 23, 2010
1 parent
04c3d22
commit 706f976
Showing
6 changed files
with
87 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 7f1c407579519e71a0dcadc05614fd98acec585e | ||
refs/heads/master: e8648a1fdb54da1f683784b36a17aa65ea56e931 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#ifndef _XT_CPU_H | ||
#define _XT_CPU_H | ||
|
||
#include <linux/types.h> | ||
|
||
struct xt_cpu_info { | ||
__u32 cpu; | ||
__u32 invert; | ||
}; | ||
|
||
#endif /*_XT_CPU_H*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/* Kernel module to match running CPU */ | ||
|
||
/* | ||
* Might be used to distribute connections on several daemons, if | ||
* RPS (Remote Packet Steering) is enabled or NIC is multiqueue capable, | ||
* each RX queue IRQ affined to one CPU (1:1 mapping) | ||
* | ||
*/ | ||
|
||
/* (C) 2010 Eric Dumazet | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/module.h> | ||
#include <linux/skbuff.h> | ||
#include <linux/netfilter/xt_cpu.h> | ||
#include <linux/netfilter/x_tables.h> | ||
|
||
MODULE_LICENSE("GPL"); | ||
MODULE_AUTHOR("Eric Dumazet <eric.dumazet@gmail.com>"); | ||
MODULE_DESCRIPTION("Xtables: CPU match"); | ||
|
||
static int cpu_mt_check(const struct xt_mtchk_param *par) | ||
{ | ||
const struct xt_cpu_info *info = par->matchinfo; | ||
|
||
if (info->invert & ~1) | ||
return -EINVAL; | ||
return 0; | ||
} | ||
|
||
static bool cpu_mt(const struct sk_buff *skb, struct xt_action_param *par) | ||
{ | ||
const struct xt_cpu_info *info = par->matchinfo; | ||
|
||
return (info->cpu == smp_processor_id()) ^ info->invert; | ||
} | ||
|
||
static struct xt_match cpu_mt_reg __read_mostly = { | ||
.name = "cpu", | ||
.revision = 0, | ||
.family = NFPROTO_UNSPEC, | ||
.checkentry = cpu_mt_check, | ||
.match = cpu_mt, | ||
.matchsize = sizeof(struct xt_cpu_info), | ||
.me = THIS_MODULE, | ||
}; | ||
|
||
static int __init cpu_mt_init(void) | ||
{ | ||
return xt_register_match(&cpu_mt_reg); | ||
} | ||
|
||
static void __exit cpu_mt_exit(void) | ||
{ | ||
xt_unregister_match(&cpu_mt_reg); | ||
} | ||
|
||
module_init(cpu_mt_init); | ||
module_exit(cpu_mt_exit); |