From 91f8f6ff3d6a07a9b172b43aa6d45696b540c119 Mon Sep 17 00:00:00 2001 From: David Siegel Date: Tue, 18 Dec 2012 01:17:01 +0100 Subject: [PATCH] [iface] use new network interface handling in browser and advertisement --- lib/advertisement.js | 3 ++- lib/browser.js | 7 ++++++- lib/resolver_sequence_tasks.js | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/advertisement.js b/lib/advertisement.js index d9a6d4e4..4406ee64 100644 --- a/lib/advertisement.js +++ b/lib/advertisement.js @@ -1,4 +1,5 @@ var dns_sd = require('./dns_sd') + , nif = require('./network_interface') , util = require('util') ; @@ -21,7 +22,7 @@ function Advertisement(serviceType, port, options, callback) { serviceType = makeServiceType(serviceType); var flags = options.flags || 0 - , ifaceIdx = options.interfaceIndex || 0 + , ifaceIdx = nif.interfaceIndex(options) , name = options.name || null , domain = options.domain || null , host = options.host || null diff --git a/lib/browser.js b/lib/browser.js index 47180fea..884e3382 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -1,4 +1,5 @@ var dns_sd = require('./dns_sd') + , nif = require('./network_interface') , util = require('util') , rst = require('./resolver_sequence_tasks') , st = require('./service_type') @@ -11,7 +12,7 @@ var Browser = exports.Browser = function Browser(serviceType, options) { options = options || {}; var flags = options.flags || 0 - , ifaceIdx = options.interfaceIndex || 0 + , ifaceIdx = nif.interfaceIndex(options) , domain = options.domain || null , context = options.context || null , requested_type = st.makeServiceType( serviceType ); @@ -91,6 +92,10 @@ Browser.defaultResolverSequence = [ , rst.makeAddressesUnique() ]; +if (typeof dns_sd.if_indextoname !== 'undefined') { + Browser.defaultResolverSequence.push(rst.networkInterfaceName()); +} + exports.browseThemAll = function browseThemAll(options) { options = options || {} options.resolverSequence = options.resolverSequence || []; diff --git a/lib/resolver_sequence_tasks.js b/lib/resolver_sequence_tasks.js index 27401fa5..4fd6d04f 100644 --- a/lib/resolver_sequence_tasks.js +++ b/lib/resolver_sequence_tasks.js @@ -174,6 +174,13 @@ exports.logService = function logService() { } } +exports.networkInterfaceName = function networkInterfaceName() { + return function networkInterfaceName(service, next) { + service.networkInterface = dns_sd.if_indextoname(service.interfaceIndex); + next(); + } +} + function errnoException(errorno, syscall) { // TODO make this more compatible with ErrnoException from src/node.cc // Once all of Node is using this function the ErrnoException from