cregit-Linux how code gets into the kernel

Release 4.16 include/linux/udp.h

Directory: include/linux
/*
 * INET         An implementation of the TCP/IP protocol suite for the LINUX
 *              operating system.  INET is implemented using the  BSD Socket
 *              interface as the means of communication with the user level.
 *
 *              Definitions for the UDP protocol.
 *
 * Version:     @(#)udp.h       1.0.2   04/28/93
 *
 * Author:      Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
 *
 *              This program is free software; you can redistribute it and/or
 *              modify it under the terms of the GNU General Public License
 *              as published by the Free Software Foundation; either version
 *              2 of the License, or (at your option) any later version.
 */
#ifndef _LINUX_UDP_H

#define _LINUX_UDP_H

#include <net/inet_sock.h>
#include <linux/skbuff.h>
#include <net/netns/hash.h>
#include <uapi/linux/udp.h>


static inline struct udphdr *udp_hdr(const struct sk_buff *skb) { return (struct udphdr *)skb_transport_header(skb); }

Contributors

PersonTokensPropCommitsCommitProp
Joe Perches2596.15%150.00%
Joseph Gasparakis13.85%150.00%
Total26100.00%2100.00%


static inline struct udphdr *inner_udp_hdr(const struct sk_buff *skb) { return (struct udphdr *)skb_inner_transport_header(skb); }

Contributors

PersonTokensPropCommitsCommitProp
Joseph Gasparakis2596.15%150.00%
Joe Perches13.85%150.00%
Total26100.00%2100.00%

#define UDP_HTABLE_SIZE_MIN (CONFIG_BASE_SMALL ? 128 : 256)
static inline u32 udp_hashfn(const struct net *net, u32 num, u32 mask) { return (num + net_hash_mix(net)) & mask; }

Contributors

PersonTokensPropCommitsCommitProp
Pavel Emelyanov2477.42%360.00%
Eric Dumazet722.58%240.00%
Total31100.00%5100.00%

struct udp_sock { /* inet_sock has to be the first member */ struct inet_sock inet; #define udp_port_hash inet.sk.__sk_common.skc_u16hashes[0] #define udp_portaddr_hash inet.sk.__sk_common.skc_u16hashes[1] #define udp_portaddr_node inet.sk.__sk_common.skc_portaddr_node int pending; /* Any pending frames ? */ unsigned int corkflag; /* Cork is required */ __u8 encap_type; /* Is this an Encapsulation socket? */ unsigned char no_check6_tx:1,/* Send zero UDP6 checksums on TX? */ no_check6_rx:1;/* Allow zero UDP6 checksums on RX? */ /* * Following member retains the information to create a UDP header * when the socket is uncorked. */ __u16 len; /* total length of pending frames */ /* * Fields specific to UDP-Lite. */ __u16 pcslen; __u16 pcrlen; /* indicator bits used by pcflag: */ #define UDPLITE_BIT 0x1 /* set by udplite proto init function */ #define UDPLITE_SEND_CC 0x2 /* set via udplite setsockopt */ #define UDPLITE_RECV_CC 0x4 /* set via udplite setsocktopt */ __u8 pcflag; /* marks socket as UDP-Lite if > 0 */ __u8 unused[3]; /* * For encapsulation sockets. */ int (*encap_rcv)(struct sock *sk, struct sk_buff *skb); void (*encap_destroy)(struct sock *sk); /* GRO functions for UDP socket */ struct sk_buff ** (*gro_receive)(struct sock *sk, struct sk_buff **head, struct sk_buff *skb); int (*gro_complete)(struct sock *sk, struct sk_buff *skb, int nhoff); /* udp_recvmsg try to use this before splicing sk_receive_queue */ struct sk_buff_head reader_queue ____cacheline_aligned_in_smp; /* This field is dirtied by udp_recvmsg() */ int forward_deficit; };
static inline struct udp_sock *udp_sk(const struct sock *sk) { return (struct udp_sock *)sk; }

Contributors

PersonTokensPropCommitsCommitProp
Ingo Molnar1773.91%133.33%
Alexey Kuznetsov313.04%133.33%
Arnaldo Carvalho de Melo313.04%133.33%
Total23100.00%3100.00%


static inline void udp_set_no_check6_tx(struct sock *sk, bool val) { udp_sk(sk)->no_check6_tx = val; }

Contributors

PersonTokensPropCommitsCommitProp
Tom Herbert24100.00%1100.00%
Total24100.00%1100.00%


static inline void udp_set_no_check6_rx(struct sock *sk, bool val) { udp_sk(sk)->no_check6_rx = val; }

Contributors

PersonTokensPropCommitsCommitProp
Tom Herbert24100.00%1100.00%
Total24100.00%1100.00%


static inline bool udp_get_no_check6_tx(struct sock *sk) { return udp_sk(sk)->no_check6_tx; }

Contributors

PersonTokensPropCommitsCommitProp
Tom Herbert20100.00%1100.00%
Total20100.00%1100.00%


static inline bool udp_get_no_check6_rx(struct sock *sk) { return udp_sk(sk)->no_check6_rx; }

Contributors

PersonTokensPropCommitsCommitProp
Tom Herbert20100.00%1100.00%
Total20100.00%1100.00%

#define udp_portaddr_for_each_entry(__sk, list) \ hlist_for_each_entry(__sk, list, __sk_common.skc_portaddr_node) #define udp_portaddr_for_each_entry_rcu(__sk, list) \ hlist_for_each_entry_rcu(__sk, list, __sk_common.skc_portaddr_node) #define IS_UDPLITE(__sk) (__sk->sk_protocol == IPPROTO_UDPLITE) #endif /* _LINUX_UDP_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Tom Herbert14835.32%413.79%
Eric Dumazet4510.74%724.14%
Gerrit Renker358.35%13.45%
Joe Perches266.21%13.45%
Joseph Gasparakis266.21%13.45%
Pavel Emelyanov266.21%310.34%
James Chapman245.73%13.45%
Alexey Kuznetsov225.25%13.45%
Ingo Molnar174.06%13.45%
Tom Parkin122.86%13.45%
Linus Torvalds (pre-git)102.39%13.45%
Arnaldo Carvalho de Melo92.15%13.45%
Paolo Abeni71.67%26.90%
David Howells40.95%13.45%
David S. Miller40.95%13.45%
Derek Atkins30.72%13.45%
Adrian Bunk10.24%13.45%
Total419100.00%29100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.