{"action":"created","issue":{"url":"https://api.github.com/repos/steve-o/openpgm/issues/52","repository_url":"https://api.github.com/repos/steve-o/openpgm","labels_url":"https://api.github.com/repos/steve-o/openpgm/issues/52/labels{/name}","comments_url":"https://api.github.com/repos/steve-o/openpgm/issues/52/comments","events_url":"https://api.github.com/repos/steve-o/openpgm/issues/52/events","html_url":"https://github.com/steve-o/openpgm/pull/52","id":266156310,"number":52,"title":"Add more control over socket options","user":{"login":"jamesdillonharvey","id":11753498,"avatar_url":"https://avatars0.githubusercontent.com/u/11753498?v=4","gravatar_id":"","url":"https://api.github.com/users/jamesdillonharvey","html_url":"https://github.com/jamesdillonharvey","followers_url":"https://api.github.com/users/jamesdillonharvey/followers","following_url":"https://api.github.com/users/jamesdillonharvey/following{/other_user}","gists_url":"https://api.github.com/users/jamesdillonharvey/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesdillonharvey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesdillonharvey/subscriptions","organizations_url":"https://api.github.com/users/jamesdillonharvey/orgs","repos_url":"https://api.github.com/users/jamesdillonharvey/repos","events_url":"https://api.github.com/users/jamesdillonharvey/events{/privacy}","received_events_url":"https://api.github.com/users/jamesdillonharvey/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2017-10-17T14:51:14Z","updated_at":"2017-10-18T09:47:17Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/steve-o/openpgm/pulls/52","html_url":"https://github.com/steve-o/openpgm/pull/52","diff_url":"https://github.com/steve-o/openpgm/pull/52.diff","patch_url":"https://github.com/steve-o/openpgm/pull/52.patch"},"body":"**DISABLE_REUSEPORT** \r\nWith the introduction of `SO_REUSEPORT` in linux kernel 3.9 and the backport to red hat 6.5 the `SO_REUSEPORT` socket option is enabled with no option to disable. The linux socket option differs from the original BSD as it allows load balancing across sockets and also restrict reusing ports to processes owned by the same user. The define `DISABLE_REUSEPORT` allows the the option to be disabled at compile time.\r\n[More Info](https://stackoverflow.com/questions/14388706/socket-options-so-reuseaddr-and-so-reuseport-how-do-they-differ-do-they-mean-t)\r\n\r\n**DISABLE_IP_MULTICAST_ALL**\r\nOpenpgm always uses the `INADDR_ANY` interface address for encapsulated pgm (to allow both mcast and unicast?). This has the side effect of receiving any other multicast data (even joined by another process with a different address) if they share the same port.  `DISABLE_IP_MULTICAST_ALL` sets socket option `IP_MULTICAST_ALL` to off, this specifies the socket will only get multicast data for the addresses it has explicitly joined.\r\n[more details](http://man7.org/linux/man-pages/man7/ip.7.html)"},"comment":{"url":"https://api.github.com/repos/steve-o/openpgm/issues/comments/337529549","html_url":"https://github.com/steve-o/openpgm/pull/52#issuecomment-337529549","issue_url":"https://api.github.com/repos/steve-o/openpgm/issues/52","id":337529549,"user":{"login":"jamesdillonharvey","id":11753498,"avatar_url":"https://avatars0.githubusercontent.com/u/11753498?v=4","gravatar_id":"","url":"https://api.github.com/users/jamesdillonharvey","html_url":"https://github.com/jamesdillonharvey","followers_url":"https://api.github.com/users/jamesdillonharvey/followers","following_url":"https://api.github.com/users/jamesdillonharvey/following{/other_user}","gists_url":"https://api.github.com/users/jamesdillonharvey/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesdillonharvey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesdillonharvey/subscriptions","organizations_url":"https://api.github.com/users/jamesdillonharvey/orgs","repos_url":"https://api.github.com/users/jamesdillonharvey/repos","events_url":"https://api.github.com/users/jamesdillonharvey/events{/privacy}","received_events_url":"https://api.github.com/users/jamesdillonharvey/received_events","type":"User","site_admin":false},"created_at":"2017-10-18T09:47:17Z","updated_at":"2017-10-18T09:47:17Z","author_association":"NONE","body":"The `#else` case of original  `#ifndef SO_REUSEPORT` is setting the socket option `SO_REUSEPORT`\r\n\r\nLinux `socket.h` (which is included in openpgm)  define `SO_REUSEPORT`  see [here](https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/socket.h#L25)\r\n\r\nI have tested and for any Redhat version > 6.5 the socket option `SO_REUSEPORT` in openpgm gets set be default.\r\n"}}
{"actor":{"display_login":"jamesdillonharvey"}}