@@ -1398,7 +1398,7 @@ void local_loop(int argc, char* const* argv, int optind, int rcv_buf, int log_in
13981398 data_source (t, rx_fd, control_fd, fec_timeout, mirror, log_interval);
13991399}
14001400
1401- void local_loop_unix (const char *wlan , int rcv_buf, int log_interval,
1401+ void local_loop_unix (int argc, char * const * argv, int optind , int rcv_buf, int log_interval,
14021402 const char *unix_socket, int debug_port, int k, int n, const string &keypair, int fec_timeout,
14031403 uint64_t epoch, uint32_t channel_id, uint32_t fec_delay, bool use_qdisc, uint32_t fwmark,
14041404 radiotap_header_t &radiotap_header, uint8_t frame_type, int control_port, bool mirror)
@@ -1410,10 +1410,19 @@ void local_loop_unix(const char *wlan, int rcv_buf, int log_interval,
14101410
14111411 int fd = open_unix_socket_for_rx (unix_socket, rcv_buf);
14121412
1413- WFB_INFO (" Listen on @%s for %s\n " , unix_socket, wlan);
1414-
14151413 rx_fd.push_back (fd);
1416- wlans.push_back (string (wlan));
1414+
1415+ for (int i = 0 ; optind + i < argc; i++)
1416+ {
1417+ char * wlan = argv[optind + i];
1418+ WFB_INFO (" Listen on @%s for %s\n " , unix_socket, wlan);
1419+ wlans.push_back (string (wlan));
1420+ }
1421+
1422+ if (!mirror && wlans.size () > 1 )
1423+ {
1424+ throw runtime_error (" Multiple cards for unix socket source only supported with mirroring mode!" );
1425+ }
14171426
14181427 if (debug_port)
14191428 {
@@ -1705,7 +1714,7 @@ int main(int argc, char * const *argv)
17051714 break ;
17061715
17071716 case LOCAL_UNIX:
1708- local_loop_unix (argv[ optind] , rcv_buf, log_interval,
1717+ local_loop_unix (argc, argv, optind, rcv_buf, log_interval,
17091718 unix_socket, debug_port, k, n, keypair, fec_timeout,
17101719 epoch, channel_id, fec_delay, use_qdisc, fwmark,
17111720 radiotap_header, frame_type, control_port, mirror);
0 commit comments