Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _TRANSP_V6_H
0003 #define _TRANSP_V6_H
0004 
0005 #include <net/checksum.h>
0006 #include <net/sock.h>
0007 
0008 /* IPv6 transport protocols */
0009 extern struct proto rawv6_prot;
0010 extern struct proto udpv6_prot;
0011 extern struct proto udplitev6_prot;
0012 extern struct proto tcpv6_prot;
0013 extern struct proto pingv6_prot;
0014 
0015 struct flowi6;
0016 struct ipcm6_cookie;
0017 
0018 /* extension headers */
0019 int ipv6_exthdrs_init(void);
0020 void ipv6_exthdrs_exit(void);
0021 int ipv6_frag_init(void);
0022 void ipv6_frag_exit(void);
0023 
0024 /* transport protocols */
0025 int pingv6_init(void);
0026 void pingv6_exit(void);
0027 int rawv6_init(void);
0028 void rawv6_exit(void);
0029 int udpv6_init(void);
0030 void udpv6_exit(void);
0031 int udplitev6_init(void);
0032 void udplitev6_exit(void);
0033 int tcpv6_init(void);
0034 void tcpv6_exit(void);
0035 
0036 int udpv6_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len);
0037 
0038 /* this does all the common and the specific ctl work */
0039 void ip6_datagram_recv_ctl(struct sock *sk, struct msghdr *msg,
0040                struct sk_buff *skb);
0041 void ip6_datagram_recv_common_ctl(struct sock *sk, struct msghdr *msg,
0042                   struct sk_buff *skb);
0043 void ip6_datagram_recv_specific_ctl(struct sock *sk, struct msghdr *msg,
0044                     struct sk_buff *skb);
0045 
0046 int ip6_datagram_send_ctl(struct net *net, struct sock *sk, struct msghdr *msg,
0047               struct flowi6 *fl6, struct ipcm6_cookie *ipc6);
0048 
0049 void __ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp,
0050                    __u16 srcp, __u16 destp, int rqueue, int bucket);
0051 static inline void
0052 ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp, __u16 srcp,
0053             __u16 destp, int bucket)
0054 {
0055     __ip6_dgram_sock_seq_show(seq, sp, srcp, destp, sk_rmem_alloc_get(sp),
0056                   bucket);
0057 }
0058 
0059 #define LOOPBACK4_IPV6 cpu_to_be32(0x7f000006)
0060 
0061 void inet6_destroy_sock(struct sock *sk);
0062 
0063 #define IPV6_SEQ_DGRAM_HEADER                          \
0064     "  sl  "                               \
0065     "local_address                         "               \
0066     "remote_address                        "               \
0067     "st tx_queue rx_queue tr tm->when retrnsmt"            \
0068     "   uid  timeout inode ref pointer drops\n"
0069 
0070 #endif