hc
2024-05-10 748e4f3d702def1a4bff191e0cf93b6a05340f01
kernel/net/ipv4/ip_sockglue.c
....@@ -317,7 +317,14 @@
317317 ipc->tos = val;
318318 ipc->priority = rt_tos2priority(ipc->tos);
319319 break;
320
-
320
+ case IP_PROTOCOL:
321
+ if (cmsg->cmsg_len != CMSG_LEN(sizeof(int)))
322
+ return -EINVAL;
323
+ val = *(int *)CMSG_DATA(cmsg);
324
+ if (val < 1 || val > 255)
325
+ return -EINVAL;
326
+ ipc->protocol = val;
327
+ break;
321328 default:
322329 return -EINVAL;
323330 }
....@@ -1724,6 +1731,9 @@
17241731 case IP_MINTTL:
17251732 val = inet->min_ttl;
17261733 break;
1734
+ case IP_PROTOCOL:
1735
+ val = inet_sk(sk)->inet_num;
1736
+ break;
17271737 default:
17281738 release_sock(sk);
17291739 return -ENOPROTOOPT;