1
0
Fork 0
mirror of https://repo.or.cz/socat.git synced 2025-07-17 08:33:24 +00:00

New option ipv6-join-source-group

This commit is contained in:
Gerhard Rieger 2023-06-24 10:40:07 +02:00
parent 003ca09721
commit 9f632ec651
8 changed files with 229 additions and 3 deletions

View file

@ -786,6 +786,9 @@ const struct optname optionnames[] = {
#ifdef IPV6_JOIN_GROUP
IF_IP6 ("ipv6-add-membership", &opt_ipv6_join_group)
#endif
#ifdef MCAST_JOIN_SOURCE_GROUP
IF_IP6 ("ipv6-add-source-membership", &opt_ipv6_join_source_group)
#endif
#ifdef IPV6_AUTHHDR
IF_IP6 ("ipv6-authhdr", &opt_ipv6_authhdr)
#endif
@ -804,6 +807,9 @@ const struct optname optionnames[] = {
#ifdef IPV6_JOIN_GROUP
IF_IP6 ("ipv6-join-group", &opt_ipv6_join_group)
#endif
#ifdef MCAST_JOIN_SOURCE_GROUP
IF_IP6 ("ipv6-join-source-group", &opt_ipv6_join_source_group)
#endif
#ifdef IPV6_PKTINFO
IF_IP6 ("ipv6-pktinfo", &opt_ipv6_pktinfo)
#endif
@ -856,6 +862,9 @@ const struct optname optionnames[] = {
#ifdef IPV6_JOIN_GROUP
IF_IP6 ("join-group", &opt_ipv6_join_group)
#endif
#ifdef MCAST_JOIN_SOURCE_GROUP
IF_IP6 ("join-source-group", &opt_ipv6_join_source_group)
#endif
#if WITH_FS && defined(FS_JOURNAL_DATA_FL)
IF_ANY ("journal", &opt_fs_journal_data)
IF_ANY ("journal-data", &opt_fs_journal_data)
@ -2490,6 +2499,12 @@ int parseopts_table(const char **a, groups_t groups, struct opt **opts,
break;
#endif
#if HAVE_STRUCT_GROUP_SOURCE_REQ
case TYPE_GROUP_SOURCE_REQ:
xiotype_ip6_join_source_group(token, ent, opt);
break;
#endif
#if WITH_IP4
case TYPE_IP4NAME:
{
@ -3331,6 +3346,12 @@ int applyopts(int fd, struct opt *opts, enum e_phase phase) {
++opt; continue;
#endif /* defined(HAVE_STRUCT_IP_MREQ) || defined (HAVE_STRUCT_IP_MREQN) */
#if defined(HAVE_STRUCT_GROUP_SOURCE_REQ)
case TYPE_GROUP_SOURCE_REQ:
/* handled in applyopts_single */
++opt; continue;
#endif /* defined(HAVE_STRUCT_GROUP_SOURCE_REQ) */
/*! still many types missing; implement on demand */
#if WITH_IP4
case TYPE_IP4NAME:
@ -3984,6 +4005,14 @@ int applyopts_single(struct single *xfd, struct opt *opts, enum e_phase phase) {
}
break;
#endif /* WITH_IP6 && defined(HAVE_STRUCT_IPV6_MREQ) */
#if WITH_IP6 && defined(HAVE_STRUCT_GROUP_SOURCE_REQ)
case OPT_IPV6_JOIN_SOURCE_GROUP:
if (xioapply_ip6_join_source_group(xfd, opt) < 0) {
continue;
}
break;
#endif /* WITH_IP6 && defined(HAVE_STRUCT_IPV6_MREQ) */
default:
/* ignore here */
++opt; continue;