Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752110AbdI2KWr (ORCPT ); Fri, 29 Sep 2017 06:22:47 -0400 Received: from frisell.zx2c4.com ([192.95.5.64]:44171 "EHLO frisell.zx2c4.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751241AbdI2KWp (ORCPT ); Fri, 29 Sep 2017 06:22:45 -0400 X-Google-Smtp-Source: AOwi7QBFdBR7ASiZJHmhMDQdl/wsBkGM8Y/Pu6KrlEceQNXEKoROKEB0WQIGa+ou6cB+XhL5KbxI3vCnXlyNWnZyStM= MIME-Version: 1.0 From: "Jason A. Donenfeld" Date: Fri, 29 Sep 2017 12:22:42 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: netlink backwards compatibility in userspace tools To: Netdev , LKML Cc: Daniel Kahn Gillmor Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1667 Lines: 41 Hi guys, One handy aspect of Netlink is that it's backwards compatible. This means that you can run old userspace utilities on new kernels, even if the new kernel supports new features and netlink attributes. The wire format is stable enough that the data marshaled can be extended without breaking compat. Neat. I was wondering, though, what you think the best stance is toward these old userspace utilities. What should they do if the kernel sends it netlink attributes that it does not recognize? At the moment, I'm doing something like this: static void warn_unrecognized(void) { static bool once = false; if (once) return; once = true; fprintf(stderr, "Warning: this program received from your kernel one or more\n" "attributes that it did not recognize. It is possible that\n" "this version of wg(8) is older than your kernel. You may\n" "want to update this program.\n"); } This seems like a somewhat sensible warning, but then I wonder about distributions like Debian, which has a long stable life cycle, so it frequently has very old tools (ancient iproute2 for example). Then, VPS providers have these Debian images run on top of newer kernels. People in this situation would undoubtedly see the above warning a lot and not be able to do anything about it. Not horrible, but a bit annoying. Is this an okay annoyance? Or is it advised to just have no warning at all? One idea would be to put it behind an environment variable flag, but I don't like too many nobs. I'm generally wondering about attitudes toward this kind of userspace program behavior in response to newer kernels. Thanks, Jason