From 014f965d6c4e946752c4a5f7fc0062081670725f Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Wed, 1 Jun 2011 11:24:18 +0200 Subject: [PATCH] added struct for raw ops --- src/fb_pflana.c | 27 ++++++++++++++++++++++----- src/fb_pflana.h | 4 ++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/fb_pflana.c b/src/fb_pflana.c index 34fb858..14da894 100644 --- a/src/fb_pflana.c +++ b/src/fb_pflana.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -31,8 +32,6 @@ static struct proto lana_proto; -static const struct proto_ops lana_ui_ops; - struct fb_pflana_priv { idp_t port[NUM_TYPES]; seqlock_t lock; @@ -328,6 +327,8 @@ static int lana_proto_get_port(struct sock *sk, unsigned short sport) return 0; } +static const struct proto_ops lana_raw_ops; + static int lana_family_create(struct net *net, struct socket *sock, int protocol, int kern) { @@ -348,7 +349,17 @@ static int lana_family_create(struct net *net, struct socket *sock, sock_init_data(sock, sk); sock->state = SS_UNCONNECTED; - sock->ops = &lana_ui_ops; + + switch (protocol) { + case LANA_PROTO_RAW: + sock->ops = &lana_raw_ops; + break; + default: + sock->ops = &lana_raw_ops; + WARN(1, "Invalid protocol number!\n"); + break; + } + sk->sk_backlog_rcv = lana_proto_backlog_rcv; sk->sk_protocol = protocol; sk->sk_family = PF_LANA; @@ -364,7 +375,7 @@ static const struct net_proto_family lana_ui_family_ops = { .owner = THIS_MODULE, }; -static const struct proto_ops lana_ui_ops = { +static const struct proto_ops lana_raw_ops = { .family = PF_LANA, .owner = THIS_MODULE, .release = lana_ui_release, @@ -385,7 +396,7 @@ static const struct proto_ops lana_ui_ops = { .sendpage = sock_no_sendpage, }; -static struct proto lana_proto = { +static struct proto lana_proto __read_mostly = { .name = "LANA", .owner = THIS_MODULE, .obj_size = sizeof(struct lana_sock), @@ -398,6 +409,12 @@ static struct proto lana_proto = { .get_port = lana_proto_get_port, }; +static struct lana_protocol lana_proto_raw __read_mostly = { + .proto = LANA_PROTO_RAW, + .ops = &lana_raw_ops, + .proto = &lana_proto, +}; + static int init_fb_pflana(void) { int ret; diff --git a/src/fb_pflana.h b/src/fb_pflana.h index f16884d..457d775 100644 --- a/src/fb_pflana.h +++ b/src/fb_pflana.h @@ -20,9 +20,9 @@ /* Protocols in LANA family */ struct lana_protocol { - int proto; + int protocol; const struct proto_ops *ops; - struct proto *prot; + struct proto *proto; }; extern int pflana_proto_register(int proto, struct lana_protocol *lp); -- 2.11.4.GIT