static int _get_mtu(const nozzle_t nozzle)
{
- int err;
+ int err = 0, savederrno = 0;
memset(&nozzle->ifr, 0, sizeof(struct ifreq));
strncpy(nozzle->ifname, nozzle->nozzlename, IFNAMSIZ);
err = ioctl(lib_cfg.sockfd, SIOCGIFMTU, &nozzle->ifr);
- if (err)
+ if (err) {
+ savederrno = errno;
goto out_clean;
+ }
err = nozzle->ifr.ifr_mtu;
out_clean:
+ errno = savederrno;
return err;
}
int nozzle_get_mtu(const nozzle_t nozzle)
{
- int err;
+ int err = 0, savederrno = 0;
- pthread_mutex_lock(&lib_mutex);
+ if (!nozzle) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ savederrno = pthread_mutex_lock(&lib_mutex);
+ if (savederrno) {
+ errno = savederrno;
+ return -1;
+ }
if (!_check(nozzle)) {
errno = EINVAL;
}
err = _get_mtu(nozzle);
+ savederrno = errno;
out_clean:
pthread_mutex_unlock(&lib_mutex);
-
+ savederrno = errno;
return err;
}
int nozzle_get_ips(const nozzle_t nozzle, char **ip_addr_list, int *entries);
+/**
+ * nozzle_get_mtu
+ * @brief retrive mtu on a given nozzle interface
+ *
+ * nozzle - pointer to the nozzle struct
+ *
+ * @return
+ * MTU on success
+ * -1 on error and errno is set.
+ */
+
int nozzle_get_mtu(const nozzle_t nozzle);
int nozzle_set_mtu(nozzle_t nozzle, const int mtu);
int nozzle_reset_mtu(nozzle_t nozzle);