diff options
| -rw-r--r-- | include/net/tcp.h | 12 | ||||
| -rw-r--r-- | include/uapi/linux/sockios.h | 1 | ||||
| -rw-r--r-- | net/ipv4/tcp.c | 20 | ||||
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 109 |
4 files changed, 0 insertions, 142 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index 6fb38a05f..373488814 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -1542,15 +1542,6 @@ struct tcp_iter_state { loff_t last_pos; }; -/* MTK_NET_CHANGES */ -/* - * reset tcp connection by uid - */ -struct uid_err { - int appuid; - int errNum; -}; - extern int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo); extern void tcp_proc_unregister(struct net *net, struct tcp_seq_afinfo *afinfo); @@ -1570,9 +1561,6 @@ extern int tcp_gro_complete(struct sk_buff *skb); extern int tcp4_gro_complete(struct sk_buff *skb); extern int tcp_nuke_addr(struct net *net, struct sockaddr *addr); -/* MTK_NET_CHANGES */ -extern void tcp_v4_reset_connections_by_uid(struct uid_err uid_e); -extern void tcp_v4_handle_retrans_time_by_uid(struct uid_err uid_e); #ifdef CONFIG_PROC_FS extern int tcp4_proc_init(void); diff --git a/include/uapi/linux/sockios.h b/include/uapi/linux/sockios.h index 6456f27cb..f7ffe36db 100644 --- a/include/uapi/linux/sockios.h +++ b/include/uapi/linux/sockios.h @@ -66,7 +66,6 @@ #define SIOCSIFHWBROADCAST 0x8937 /* set hardware broadcast addr */ #define SIOCGIFCOUNT 0x8938 /* get number of devices */ #define SIOCKILLADDR 0x8939 /* kill sockets with this local addr */ -#define SIOCKILLSOCK 0x893a /* MTK_NET_CHANGES kill socket with by uid */ #define SIOCGIFBR 0x8940 /* Bridging support */ #define SIOCSIFBR 0x8941 /* Set bridging options */ diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index a0b04a1f2..5f0ac2122 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -580,26 +580,6 @@ int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg) else answ = tp->write_seq - tp->snd_nxt; break; - /* MTK_NET_CHANGES */ - case SIOCKILLSOCK: - { - struct uid_err uid_e; - if (copy_from_user(&uid_e, (char __user *)arg, sizeof(uid_e))) - return -EFAULT; - printk(KERN_WARNING "SIOCKILLSOCK uid = %d , err = %d", - uid_e.appuid, uid_e.errNum); - if (uid_e.errNum == 0) - { - // handle BR release problem - tcp_v4_handle_retrans_time_by_uid(uid_e); - } - else - { - tcp_v4_reset_connections_by_uid(uid_e); - } - - return 0; - } default: return -ENOIOCTLCMD; } diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 1bbdff22f..8eb98f447 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -2223,115 +2223,6 @@ void tcp_v4_destroy_sock(struct sock *sk) } EXPORT_SYMBOL(tcp_v4_destroy_sock); -void tcp_v4_handle_retrans_time_by_uid(struct uid_err uid_e) -{ - unsigned int bucket; - uid_t skuid = (uid_t)(uid_e.appuid); - struct inet_connection_sock *icsk = NULL;//inet_csk(sk); - - - for (bucket = 0; bucket < tcp_hashinfo.ehash_mask; bucket++) { - struct hlist_nulls_node *node; - struct sock *sk; - spinlock_t *lock = inet_ehash_lockp(&tcp_hashinfo, bucket); - - spin_lock_bh(lock); - sk_nulls_for_each(sk, node, &tcp_hashinfo.ehash[bucket].chain) { - - if (sysctl_ip_dynaddr && sk->sk_state == TCP_SYN_SENT) - continue; - if (sock_flag(sk, SOCK_DEAD)) - continue; - - if(sk->sk_socket){ - if(SOCK_INODE(sk->sk_socket)->i_uid != skuid) - continue; - else - printk("[mmspb] tcp_v4_handle_retrans_time_by_uid socket uid(%d) match!", - SOCK_INODE(sk->sk_socket)->i_uid); - } else{ - continue; - } - - sock_hold(sk); - spin_unlock_bh(lock); - - local_bh_disable(); - bh_lock_sock(sk); - - // update sk time out value - icsk = inet_csk(sk); - printk("[mmspb] tcp_v4_handle_retrans_time_by_uid update timer\n"); - - sk_reset_timer(sk, &icsk->icsk_retransmit_timer, jiffies + 2); - icsk->icsk_rto = sysctl_tcp_rto_min * 30; - icsk->icsk_MMSRB = 1; - - bh_unlock_sock(sk); - local_bh_enable(); - spin_lock_bh(lock); - sock_put(sk); - - } - spin_unlock_bh(lock); - } - -} - - -/* - * tcp_v4_nuke_addr_by_uid - destroy all sockets of spcial uid - */ -void tcp_v4_reset_connections_by_uid(struct uid_err uid_e) -{ - unsigned int bucket; - uid_t skuid = (uid_t)(uid_e.appuid); - - for (bucket = 0; bucket < tcp_hashinfo.ehash_mask; bucket++) { - struct hlist_nulls_node *node; - struct sock *sk; - spinlock_t *lock = inet_ehash_lockp(&tcp_hashinfo, bucket); - -restart: - spin_lock_bh(lock); - sk_nulls_for_each(sk, node, &tcp_hashinfo.ehash[bucket].chain) { - - if (sysctl_ip_dynaddr && sk->sk_state == TCP_SYN_SENT) - continue; - if (sock_flag(sk, SOCK_DEAD)) - continue; - - if(sk->sk_socket){ - if(SOCK_INODE(sk->sk_socket)->i_uid != skuid) - continue; - else - printk(KERN_INFO "SIOCKILLSOCK socket uid(%d) match!", - SOCK_INODE(sk->sk_socket)->i_uid); - } else{ - continue; - } - - sock_hold(sk); - spin_unlock_bh(lock); - - local_bh_disable(); - bh_lock_sock(sk); - sk->sk_err = uid_e.errNum; - printk(KERN_INFO "SIOCKILLSOCK set sk err == %d!! \n", sk->sk_err); - sk->sk_error_report(sk); - - tcp_done(sk); - bh_unlock_sock(sk); - local_bh_enable(); - sock_put(sk); - - goto restart; - } - spin_unlock_bh(lock); - } -} - - #ifdef CONFIG_PROC_FS /* Proc filesystem TCP sock list dumping. */ |
