.. | .. |
---|
317 | 317 | ipc->tos = val; |
---|
318 | 318 | ipc->priority = rt_tos2priority(ipc->tos); |
---|
319 | 319 | 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; |
---|
321 | 328 | default: |
---|
322 | 329 | return -EINVAL; |
---|
323 | 330 | } |
---|
.. | .. |
---|
1724 | 1731 | case IP_MINTTL: |
---|
1725 | 1732 | val = inet->min_ttl; |
---|
1726 | 1733 | break; |
---|
| 1734 | + case IP_PROTOCOL: |
---|
| 1735 | + val = inet_sk(sk)->inet_num; |
---|
| 1736 | + break; |
---|
1727 | 1737 | default: |
---|
1728 | 1738 | release_sock(sk); |
---|
1729 | 1739 | return -ENOPROTOOPT; |
---|