nodejs dbus кодирует количество в байтах, как мне сделать так, чтобы оно кодировало как uint32?

Я пытаюсь использовать NPM dbus для управления адаптером Ethernet и получить следующую ошибку, показанную здесь в dbus-monitorвыходной.

error time=1540389658.120119 sender=:1.14 -> destination=:1.198 error_name=org.freedesktop.NetworkManager.Settings.Connection.InvalidProperty reply_serial=37
   string "ipv4.gateway: gateway cannot be set if there are no addresses configured"

Итак, он жалуется, что не настроены адреса...

Давайте посмотрим на данные адреса npm-dbus послал...

    dict entry(
       string "address-data"
       variant                   array [
             array [
                dict entry(
                   string "address"
                   variant                               string "192.168.1.200"
                )
                dict entry(
                   string "prefix"
                   variant                               byte 24
                )
             ]
          ]
    )

Это отличается от того, что работает, используя gdbus командная строка, соответствующая выдержка здесь:

  'ipv4':\
   {
    'method': <'manual'>,\
    'dns': <[uint32 4261521600]>,\
    'address-data': <[{'address': <'192.168.1.198'>, 'prefix': <uint32 24>}]>,\
        'gateway': <'192.168.1.1'>
   }

Я думаю, что курящий пистолет в том, что 'prefix': <uint32 24> в gdbus версия по сравнению с byte 24 создано npm-dbus,

Я попробовал несколько идей, чтобы получить npm-dbus закодировать префикс как uint32, но безуспешно. Вот объект javascript, который я добавляю в него:

    ipv4: {
        method: 'manual',
        dns: [4261521600],
        'address-data': [{'address': '192.168.1.200', 'prefix': 24}],
        gateway: '192.168.1.1'
    }

Вещи, которые я пробовал в определении этого объекта, которые все еще привели к prefix кодируется как байт:

'prefix': 0x00000018 // byte 24
'prefix': 0x10000018 - 0x10000000 // byte 24

Есть идеи?

Спасибо!

0 ответов

Другие вопросы по тегам